如何使用matlab将一行文本文件中的读取值正确地读入矩阵
x=cell2mat(文本扫描(行,%%s%f%f%f%f%f%f%f%f','CollectOutput',1,'EmptyValue',0)) 给定值为 R17 19311104.430 8 103337621.26208 19311107.476 7 我应该得到输出 19311104.4300000 8 103337621.262080 0 19311107.4760000 7 但是如何使用matlab将一行文本文件中的读取值正确地读入矩阵,matlab,Matlab,x=cell2mat(文本扫描(行,%%s%f%f%f%f%f%f%f%f','CollectOutput',1,'EmptyValue',0)) 给定值为 R17 19311104.430 8 103337621.26208 19311107.476 7 我应该得到输出 19311104.4300000 8 103337621.262080 0 19311107.4760000 7 但是 19311104.4300000 8 103337621.262080 19311107.4760000
19311104.4300000 8 103337621.262080 19311107.4760000 700为什么假设输出
19311104.4300000 8 103337621.262080 0 0 0 0 19311107.4760000 7
从输入
R17 19311104.430 8 103337621.26208 19311107.476 7
?
您的操作textscan(行“%*s%f%f%f%f%f%f%f%f',“CollectOutput”,1,“EmptyValue”,0)
正在从输入字符串中收集9个浮点数。
您的输入字符串仅列出5个浮点数,这意味着前5个%f
获得一个值,而其余4个将变为NaN
(或者在您的情况下0
,因为'EmptyValue',0
参数)
因此,一切都按预期进行
但是,如果您想要达到预期的结果,您需要使用一些更“奇特”的算法,例如:
x = zeros(1,9);
tmp=cell2mat(textscan(line,'%*s%f%f%f%f%f%f%f%f%f','CollectOutput',1));
x(1:3)=tmp(1:3);
x(end-1:end) = tmp(4:5)