我对使用Matlab导入数据有点陌生。基本上,我有一份Ascii文件。它有13行头行,以及765列和3500行数据。我试图将数据导入到Matlab中的3500x765矩阵中。我试过以下几种方法:
fileID = fopen('filename');
formatspec = [repmat('%f ', [1,765])];
raw_data=textscan(fileID,formatspec, 'Headerlines',13,'delimiter','\t');它成功地跳过了13行头行。但是,它只给出了一个仅包含第一行数据的1x765矩阵。
也许我误解了我应该如何使用文本扫描,所以任何帮助获得我的其他3499行数据将是非常感谢的。
~谢谢
注意事项
数据文件本身的格式如下。前13行不包含数据本身。后面的所有行都包含与下面将要粘贴的数据集类似的数据集,扩展为700+列和3000+行。
Wyko ASCII数据文件格式0 1 1
X号3571
Y号765
块名类型长度值
波长7 4 72.482628
方面7 4 1
Pixel_size 7 4 0.00196
StageY 7 4 -0.048055
放大倍数8 8 5.05
StageX 7 4 0.214484
ScannerPosition 7 4 3490.000732
ScannerSpeed 7 4 3.165393
RAW_DATA 3 10927260
-10976.61035 -10977.07324 -10981.07422 -10985.6084…
-10967.41309 -10963.31836 -10966.75195 -10980.40723…
-10969.08496 -10976.03711 -10976.62988 -10964.23731…
-10974.12695 -10976.61133 -10979.2627 -10973.57813…
-10969.21094 -10966.56543 -10973.74512 -10983.41797…
-10970.18359 -10980.82715 -10968.00195 -10975.58594…
-10980.41016 -10982.39356 -10982.74316 -10974.51563…
-10972.31641 -10984.00488 -10987.89453 -10976.23633…
发布于 2014-06-02 23:09:41
我认为下面的工作,但我没有Matlab在这台机器上测试出来。
fileID = fopen('filename');
formatspec = [repmat('%f ', [1,765])];
raw_data = new_data = textscan(fileID,formatspec, 'Headerlines',13,'delimiter','\t');
while ~feof(fileID)
new_data = textscan(fileID,formatspec,'delimiter','\t');
raw_data = [raw_data; new_data];
end
fclose(fileID);请注意,这不是一种特别有效的方法。如果标头行给出了数组的大小,则可能需要使用零创建适当大小的数组,然后将数据读入数组中。
https://stackoverflow.com/questions/24004509
复制相似问题