如何使用textscan来读取文件中的所有行

时间:2012-12-12 18:45:46

标签: matlab

我正在尝试使用以下

读取.m文件中的所有行
file_content = textscan(fid, '%s', 'delimiter', '\n', 'whitespace', '')

但这只是返回

file_content = 

    {0x1 cell}

实际上我的文件有224行。所以,如果我使用

file_content = textscan(fid,'%s',224,'delimiter','\n')

我得到所有的行

file_content = 

    {224x1 cell}

在.m文件中读取所有数据(主要是字符串)的更合适的方法是什么? 感谢

3 个答案:

答案 0 :(得分:3)

既然你没有列出你的需求(你读的是一个巨大的文件吗?许多小文件?速度是个问题?你真的想做什么?)我给你最简单的答案:

你这样做:

f = fopen('data.txt');             
g = textscan(f,'%s','delimiter','\n');
fclose(f);

记得在阅读后关闭,否则你将无法再次阅读。

您可以将第一行作为g {1} {1},将第二行作为g {1} {2},依此类推。

以下是textscan的matlab文档,其中提供了更多详细信息。

答案 1 :(得分:2)

这是一个对我有用的方法:

fid = fopen('filename','r'); %opening in read mode (default)
inter = textscan(fid,'%[^\n]'); 
lines = inter{1,1};
fclose(fid);

此命令逐行读取整个文件。例如,我有一个包含1332行的文本文件,此代码创建一个inter变量{1,1 cell}lines [1x102944 char]

我不确定为什么/如何运作(如果其他人在阅读此内容时知道如何会很好!)但它适用于我的程序。

答案 2 :(得分:2)

对textcan的调用意味着“将所有内容读取到\ n”。

一般情况下,您的文件可能包含混合行尾,或者根本没有,并且记录以“:”或其他内容分隔。