如何在matlab中将文本文件中的行作为字符串读取?

时间:2012-06-01 18:15:30

标签: matlab file-io

我正在尝试在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')将该行作为字符串读取,但删除所有空格。

5 个答案:

答案 0 :(得分:8)

fgetl(fid)会做你想要的。 Newline被剥夺了。

答案 1 :(得分:2)

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

答案 2 :(得分:1)

如果您想将整个文件读为字符串(您的文件只有一行),请尝试:

s = fileread('input.txt');   %# returns a char vector
s = strtrim(s);              %# trim whitespaces

如果你看一下FILEREAD函数的源代码,它基本上是以二进制模式读取文件作为一个字符数组:fread(fid, '*char')

答案 3 :(得分:0)

默认情况下,使用textscan将

空格视为分隔符。 在调用时指定一个不同的分隔符(在数据中不存在),应该这样做,添加这个f.e。

    '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

希望这会有所帮助

答案 4 :(得分:0)

使用:

clc;
fid = fopen('fileName.m');

while ischar(tline)
    disp(strcat("Line imported: ",tline))
    tline = fgetl(fid);
end

fclose(fid);