Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从matlab中的文件(.txt或.dat)逐行读取数据_Matlab_Fopen_Textscan - Fatal编程技术网

从matlab中的文件(.txt或.dat)逐行读取数据

从matlab中的文件(.txt或.dat)逐行读取数据,matlab,fopen,textscan,Matlab,Fopen,Textscan,我想从一个包含一行文本和几行数字数据的文件中读取一行数字数据。 我在MATLAB中使用fopen和textscan(作为所有字符串值)命令尝试了这一点。加载所有数据并尝试执行任何数学运算后,显示以下错误 类型为“cell”的输入参数的未定义函数或方法“plus” 我正在尝试加载包含以下数据的以下文件: K V M UV JV CI SI JRM MRJ MIM JIJ VB UB 90000 10800 216000 205200 226800 205200 431940 215970 2159

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

类型为“cell”的输入参数的未定义函数或方法“plus”

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

K V M UV JV CI SI JRM MRJ MIM JIJ VB UB
90000 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 215970

16502814212279231557107107112157742516622680020520043194015970215970

我只需要第三排的数字数据就可以了。请帮助我

谢谢你在这方面的帮助。
Deepak

这里发生了一些事情,如果没有看到您的代码,就很难确切知道问题出在哪里

当您将数据作为字符串加载时,它就是一个字符串,因此像
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
的值将它们缩小