我正在尝试在 MATLAB 中读取格式如下的文本文件。我希望将整行作为字符串读取。
2402:0.099061 2404:0.136546 2406:0.447161 2407:0.126333 2408:0.213803 2411:0.068189
我尝试了几件事。
textscan(fid, '%s')
读取该行,但将该行拆分为空格处的单元格。
fscanf(fid, '%s')
将该行作为字符串读取,但删除所有空格。
fgetl(fid)
会做你正在寻找的。换行被剥离。
textscan
默认情况下使用空格分隔符。将分隔符设置为空字符串:
>> q = textscan(fid, '%s', 'Delimiter', '');
>> q{1}{:}
ans = 2402:0.099061 2404:0.136546 2406:0.447161 2407:0.126333 2408:0.213803 2411:0.068189
如果您想将整个文件作为字符串读取(您的文件只有一行),请尝试:
s = fileread('input.txt'); %# returns a char vector
s = strtrim(s); %# trim whitespaces
如果您查看 FILEREAD 函数的源代码,它基本上是以二进制模式将文件作为字符数组读取:fread(fid, '*char')
默认情况下,textscan 将空格视为分隔符。调用时指定不同的分隔符(数据中不存在),这应该可以解决问题,添加这个 fe
'delimiter', '|'
你也可以使用
file = textread(<fileref goes here>, '%s', 'delimiter', '\n')
然后
file{1,1}
将返回
ans =
2402:0.099061 2404:0.136546 2406:0.447161 2407:0.126333 2408:0.213803 2411:0.068189
希望这可以帮助
采用:
clc;
fid = fopen('fileName.m');
while ischar(tline)
disp(strcat("Line imported: ",tline))
tline = fgetl(fid);
end
fclose(fid);