4

我正在尝试使用以下内容读取 .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 文件中的所有数据(主要是字符串)的更合适的方法是什么?谢谢

4

3 回答 3

3

由于您没有列出您的需求(您是否正在阅读一个大文件?很多小文件?速度是一个问题吗?您真正想要做什么?)我给您最简单的答案:

你来做这件事:

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

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

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

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

于 2012-12-12T19:31:00.250 回答
3

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

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

此命令“逐行”读取整个文件。例如,我有一个 1332 行的文本文件,这段代码创建了一个变量inter ,它是 a {1,1 cell}lines它是 a [1x102944 char]

我不确定它为什么/如何工作(如果其他人阅读这篇文章知道如何工作,那就太好了!)但它适用于我的程序。

于 2013-09-30T21:15:49.920 回答
2

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

一般来说,您的文件可能有混合的行尾,或者根本没有,并且记录由“:”或其他东西分隔。

于 2014-02-07T03:48:02.317 回答