0

我想从一个文件中读取一行包含数字数据的行,该文件包含一个文本行和几行包含数字数据的行。我已经通过在 MATLAB 中使用 fopen 和 textscan(作为所有字符串值)命令尝试了这一点。加载所有数据并尝试进行任何数学运算后,它显示以下错误。

'cell' 类型的输入参数的未定义函数或方法 'plus'。

我正在尝试加载以下包含以下数据的文件:

KVM UV JV CI SI JRM MRJ MIM JIJ VB UB
90000 0 0 0 0 0 0 0 10800 216000 205200 226800 205200 431940 215970 215970

165026 122 122 99 23 105 7 27 10811 215874 275166 226800 205200 431940 215970 215970

165027 132 122 49 23 115 9 97 10911 215674 275166 226800 205200 431940 215970 215970

165028 142 122 79 23 155 7 107 10711 215774 225166 226800 205200 431940 215970 215970

我只需要第三行的数字数据供我使用。请帮助我。

感谢您在这方面的帮助。迪帕克

4

1 回答 1

0

您在这里发生了几件事,如果没有看到您的代码,很难确切地知道问题出在哪里。

当您将数据作为字符串加载时,它就是一个字符串,因此像这样plus的运算符不会让您走得太远。textscan还返回一个元胞数组,该数组适用于在单个变量中保存不同类型的数据,但不适合做数学运算。

只要您的文件不是太长,并且您知道格式,您就可以使用fgetl.

m = 1;
fid = fopen(fileName);
headerLine = fgetl(fid);% read in the first line, then ignore it
dataLine = fgetl(fid); 
while ischar(fileLine) % EOF will return -1
    C = textscan(dataLine,'%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f','delimiter',char(32));
    firstVariable(m) = C{1};
    secondVariable(m) = C{2}; % etc.
    blankLine = fgetl(fid); %this line is blank
    dataLine = fgetl(fid); %this line has data, read it in and finish the loop 
    m = m +1;
end 
fclose(fid)

如果您知道(或可以以其他方式计算)事先将拥有的行数,则可以并且应该预先分配变量,否则事情会变慢。如果您对上限有一个好主意,您可以分配比您需要的更多的空间,然后在最后使用m.

于 2013-11-17T15:22:35.110 回答