我使用Matlab对数据导入有点新意。 基本上,我有一个Ascii文件。它有13个标题行,以及765列和~3500行数据。我试图在Matlab中将数据导入3500 x 765矩阵。我尝试了以下内容:
fileID = fopen('filename');
formatspec = [repmat('%f ', [1,765])];
raw_data=textscan(fileID,formatspec, 'Headerlines',13,'delimiter','\t');
它成功跳过了13个标题行。但是,它只给我一个1 x 765矩阵,只包含第一行的数据。
也许我误解了我应该如何使用文本扫描,所以获得我的其他~3499行数据的任何帮助都将非常受欢迎。
〜谢谢
注
数据文件本身的格式如下。前13行不包含数据本身。其后的所有行都包含类似于下面将粘贴的数据集,扩展700多列和3000多行。
Wyko ASCII数据文件格式0 1 1
X Size 3571
Y尺寸765
块名称类型长度值
波长7 4 72.482628
Aspect 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 ...
答案 0 :(得分:0)
我认为以下内容应该可行,但我没有在这台机器上安装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);
请注意,这不是一种特别有效的方法。如果标题行给出了数组的大小,则可能需要使用零来创建适当大小的数组,然后将数据读入数组。