我正在尝试使用以下
读取.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文件中读取所有数据(主要是字符串)的更合适的方法是什么? 感谢
答案 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”。
一般情况下,您的文件可能包含混合行尾,或者根本没有,并且记录以“:”或其他内容分隔。