我想使用fscanf
来读取包含4行且列数未知的文本文件。换行符由两个连续的空格表示。
有人建议我将:
作为sizeA
参数传递,但它不起作用。
如何阅读我的数据?
更新:文件格式为
String1 String2 String3
10 20 30
a b c
1 2 3
我必须填充4个数组,每行一个。
答案 0 :(得分:0)
看看这是否适用于您的应用程序。
fid1=fopen('test.txt');
i=1;
check=0;
while check~=1
str=fscanf(fid1,'%s',1);
if strcmp(str,'')~=1;
string(i)={str};
end
i=i+1;
check=strcmp(str,'');
end
fclose(fid1);
X=reshape(string,[],4);
ar1=X(:,1)
ar2=X(:,2)
ar3=X(:,3)
ar4=X(:,4)
一旦你拥有' ar1'' ar2',' ar3',' ar4'你可以随意解析它们。
答案 1 :(得分:0)
我找到了一个解决方案,我不知道它是否是唯一的解决方案,但它运行良好:
LineRenderer
答案 2 :(得分:0)
您可以使用
rawText = getl(fid);
lines = regexp(thisLine,' ','split);
tokens = {};
for ix = 1:numel(lines)
tokens{end+1} = regexp(lines{ix},' ','split'};
end
这将为您提供cell array具有行和列形状或原始数据的字符串。 要读取任意一行文本,请根据您提供的格式化信息将其分解。我的例子使用了一个空格字符。
这使用正则表达式来定义分隔符。正则表达式强大但过于复杂,无法在此描述。请参阅regexp和regular expressions的MATLAB帮助。