2014-09-25 92 views
1

使用IMPORTDATA意见,我只好最近更新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 
+0

@Divakar我期望它的工作方式类似于2008年的importdata。对于这个文件,它会返回一个25x3双倍的第一行,其中'0 6.51 4.55'。然而'structure.data(1,:)'当前返回'40.0000 6.5200 4.5700' – David 2014-09-25 17:24:32

+0

对,gotch ya! – Divakar 2014-09-25 17:25:30

+0

你可以在一行中有多个'%'吗? – Divakar 2014-09-25 17:30:47

回答

2

你有什么理由不使用textscan吗?这对我的作品在2010年和2013年Matlab的:

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应该包含所有的数据,它仍然是相当可读。

+0

大部分可读性。 – David 2014-09-25 17:39:42

+0

是真的,可读性会受到一些影响,但是如果它有效的话,你总是可以把它封装到你自己的函数data = MyImportDataFunction('testdata.dat');'中。该功能将包括Divakar给出的前几行代码。可读性将被恢复;) – Hoki 2014-09-25 18:00:57

+0

@aeemnrsu你对我编辑的答案有什么看法? – magnetometer 2014-09-25 20:15:50