2
我知道这看起来很平凡,但经过几个小时浏览网络以获得答案,我开始放弃了!将单元分成单列矩阵
我正在阅读一个ASCII(字符串+双)文件使用Matlab来检索我需要的数据。我使用下面的代码:
fid = fopen(filename,'rt');
output_data = textscan(fid,'%s','Delimiter','\t');
它给了我一个单元格484 x 1.到目前为止,这是预期的。
3.0 12.605 37.815 6.173 700.000 0.567 0.4212 0.8422 0.3014 74.897 49.907 30.974 -0.004 11.483 17.374 15.066 33.257 0.1870 50.605 0.8540 92.2821
3.5 10.804 37.815 6.173 700.000 -0.729 0.4593 0.8480 0.3051 129.674 68.391 77.109 -0.002 15.490 21.910 15.165 79.908 0.2830 68.236 0.8461 92.5326
4.0 9.454 37.815 6.173 700.000 -1.674 0.4731 0.8160 0.2855 199.409 85.954 138.884 -0.005 19.052 26.176 15.297 142.077 0.3371 86.101 0.8174 92.9654
4.5 9.198 41.389 6.756 766.150 -1.351 0.4734 0.7812 0.2661 284.050 104.149 215.800 -0.004 22.081 30.708 15.461 220.582 0.3676 105.286 0.7897 94.0197
5.0 8.993 44.963 7.340 832.300 -1.475 0.4729 0.7728 0.2617 389.300 127.195 312.298 -0.011 25.463 35.872 15.667 318.630 0.3871 128.221 0.7790 95.3147
5.5 8.992 49.457 8.073 915.500 -1.475 0.4729 0.7728 0.2617 518.157 153.904 431.486 -0.015 28.794 41.955 15.922 439.302 0.4010 154.751 0.7770 96.8529
现在它变得棘手:我想创建一个矩阵每列“列”。您可以注意到,两列之间的间距取决于字符数量。
含义,我需要一个列:
3.0
3.5
4.0
etc...
下一个需要是:
12.605
10.804
9.454
etc...
依此类推,直至最后一个
92.2821
92.5326
92.9654
etc...
我发现了这片的代码可以帮助,但我无法修改它以应付超过2列。任何帮助在这里将不胜感激。
str_cellarr ={
'12:34'
'13:45'
'12:45'};
split1 = regexp(str_cellarr, ':', 'split');
split1_2cols = mat2cell(vertcat(split1{:}),size(str_cellarr,1),[1 1]);
[var1,var2] = deal(split1_2cols{:});
var1 = str2double(var1)
var2 = str2double(var2)