如何在MATLAB中使用importdata忽略注释

时间:2014-09-25 17:11:13

标签: matlab

我最近必须从2008年到2014年更新MATLAB。

如果文件中有任何非数字文本,则MATLAB的 importdata 不再输出可用值数组。测试表明,如果我从文件中删除所有评论, importdata 将返回所需的数据。

我试过这样的事情

structure = importdata('filename.txt')
structure.data

但是我的第一行,在行尾有一个注释(因此非数字文本)被切断了。我的数据文件中有很多注释,而且我不必删除所有注释。

answer似乎已过时。

textscan是解决这个问题的唯一方法吗?

我一直在使用的数据文件。

% Vin: 5 MHz 6.5 mV pk-pk
% ADRF: Pre: 6 dB, Filt: 31 MHz, VGA: 28 dB, Post: 12 dB
% VGain Vin     Vout
0   6.51    4.55 % Dirty input
40  6.52    4.57
70  6.54    4.60
110 6.55    4.88
160 6.54    6.21
200 6.53    7.83
240 6.54    10.36
270 6.53    12.95
320 6.53    18.10
360 6.52    24.70
400 6.52    32.20
440 6.51    44.60
480 6.51    57.90
520 6.52    79.50
560 6.51    105.3
600 6.53    147.9
640 6.54    195
680 6.53    272
720 6.51    357
760 6.50    500
800 6.50    677
840 6.47    881
880 6.47    993
920 6.47    1012
960 6.47    1012
1000    6.47    1012

1 个答案:

答案 0 :(得分:2)

你有什么理由不想使用文本扫描吗?这在Matlab 2010和2013中适用于我:

fid=fopen('testdata.dat');
data=textscan(fid,'%f %f %f','Headerlines',3,'Commentstyle','%');
fclose(fid);
data=cell2mat(data);

编辑: 只要您在数据的第一行没有评论,importdata('testdata.dat')就可以正常使用。在您正在比较的Matlab版本之间确定标题行数的方式似乎有所变化。如果您更喜欢importdata到textscan,请尝试:

data=importdata('testdata.dat',' ',3)

然后data.data应包含您的所有数据,并且仍然可读。