4

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

4

5 回答 5

8

fgetl(fid)会做你正在寻找的。换行被剥离。

于 2012-06-01T18:33:56.377 回答
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
于 2012-06-01T18:24:33.847 回答
2

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

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

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

于 2012-06-02T05:46:29.280 回答
0

默认情况下,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

希望这可以帮助

于 2012-06-01T18:24:21.187 回答
0

采用:

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

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

fclose(fid);
于 2016-05-26T20:19:11.537 回答