2011-12-31 93 views
0

我有一個大的文本文件,其中包含需要提取並插入到新文本文件中的數據。我可能需要將這些數據存儲在單元/矩陣數組中?在matlab中打開文本文件,並將它們保存在matlab中

但現在,問題是我試圖測試一個較小的數據集,以檢查下面的代碼是否工作。

我有一個代碼,它打開一個文本文件,掃描它並複製數據並將其保存在另一個名爲「output.txt」的文本文件中。

問題:它似乎沒有正確保存文件。它只是在文本文件中顯示一個空數組,如" [] "。原始文本文件只包含字符串。

%opens the text file and checks it line by line. 
fid1 = fopen('sample.txt'); 
tline = fgetl(fid1); 
while ischar(tline) 
    disp(tline); 
    tline = fgetl(fid1); 
end 
fclose(fid1); 


% save the sample.txt file to a new text fie 
fid = fopen('output.txt', 'w'); 
fprintf(fid, '%s %s\n', fid1); 
fclose(fid); 

% view the contents of the file 
type exp.txt 

我該從哪裏出發?

+0

什麼是操作系統? 32或64位?這頁有幫助。轉到增加交換部分http://www.mathworks.com/support/tech-notes/1100/1106.html – 2011-12-31 16:26:01

+0

這是一個64位系統,我該如何設置頁面文件大小,自定義大小,系統管理的大小,還是沒有分頁文件? – Jeiman 2011-12-31 16:33:35

+0

請出示您所做的步驟。您是否編寫了一些代碼來打開文本文件,或者您是否使用編輯器來打開文本文件? – 2011-12-31 16:58:58

回答

5

通過將所有內容一次加載到內存來讀取輸入文件並不是一個好習慣。這樣,您能夠讀取的文件大小受計算機上的內存量(或者操作系統願意分配給單個進程的內存量)的限制。

取而代之的是,使用fopen及其相關函數來逐行讀取文件或逐字符讀取文件。

例如,

fid1 = fopen('sample.txt', 'r'); 
fid = fopen('output.txt', 'w'); 

tline = fgetl(fid1); 
while ischar(tline) 
    fprintf(fid, '%s\n', tline); 
    tline = fgetl(fid1);  
end 

fclose(fid1); 
fclose(fid); 

type output.txt 

當然,如果你事先知道輸入文件是永遠不會很大,你可以一次通過textread或一些同等功能的使用閱讀全部內容。

+0

我需要一個函數來打開文件,然後從那裏調用它在命令窗口?如果是這樣,我將如何在m文件中調用該函數?謝謝 – Jeiman 2011-12-31 17:23:46

+1

我建議你將所有代碼寫入m文件,並從命令行調用它。因此,m文件應該包含與我在示例中給出的代碼相似的代碼,其中爲輸出文件添加另一個fopen,並在循環內寫入邏輯。 – 2011-12-31 17:30:24

+0

基本上,我想打開一個文件,存儲在一個單元格或矩陣數組中。從那裏,我想操縱數據,因爲我需要它。然後將操縱的數據保存到另一個文本文件中。我該如何去做呢? – Jeiman 2011-12-31 20:39:15

2

嘗試使用textread,它從文本文件讀取數據並將其存儲爲矩陣或單元格數組。在一天結束時,我假設您會希望將數據存儲在變量中以根據需要進行操作。完成操作後,使用fopen打開文件並使用fprintf以所需格式寫入數據。

+0

基本上,我想打開一個文件,存儲在一個單元格或矩陣數組中。從那裏,我想操縱數據,因爲我需要它。然後將操縱的數據保存到另一個文本文件中。我該如何去做呢? – Jeiman 2011-12-31 17:53:02