2012-12-12 26 views
4

我想通過以下如何textscan讀取所有的線在一個文件

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

讀取一個.m文件的所有行,但是這只是返回

file_content = 

    {0x1 cell} 

在實際我的文件有224行。所以如果我使用

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

我得到的所有行

file_content = 

    {224x1 cell} 

會是怎樣讀的.m文件中的所有數據(主要是字符串)更合適的方法是什麼? 感謝

+3

你在問什麼?定義「更合適」 – carlosdc

+1

我在問什麼是使用文本掃描讀取文件的全部內容的正確方法 – learningMatlab

回答

2

既然你不列出你的需求(?你是在讀一個巨大的文件?許多小文件的速度是一個問題,你有什麼真正想做的事?)我給你一個最簡單的答案:

你這樣做:

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

記得看完後關閉,因爲否則你將無法再次讀取。

您可以將第一行作爲g {1} {1},將第二行作爲g {1} {2},依此類推。

這是textscan的matlab文檔,它提供了更多的細節。

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

對textscan的調用意味着「讀取所有內容到\ n」。

一般而言,您的文件可能有混合行尾,或者根本沒有,並且記錄之間用':'分隔。

相關問題