2013-02-14 88 views
2

我正在寫幾行文本文件,其中之一是矩陣。我決定使用fprintf作爲普通文本消息,並使用dlmwrite將矩陣寫入文件。但是,此操作在一個while循環中完成。這裏是概要:dlmwrite追加到末尾

k=0; 

while (k<10): 

    fprintf(file,'%s', 'Hello'); 

    dlmwrite(file,M ,'-append', 'newline', 'pc'); 

    fprintf(file, '%s' , 'Goodbye'); 

    k= K+1; 

然而,當我打開該文件,所有矩陣被附加到文本文件,而不是每一個問候和告別之間的盡頭。有沒有辦法解決這個問題?

回答

3

它可能有一些做的-append選項,根據幫助結果添加到文件的末尾。

您正在訪問具有兩個功能fprintfdlmwrite的相同文件。

這可能是效率不高,但是從fprintf關閉文件每次寫入後會工作:

clear all 
close all 

file_name = 'aa.txt'; 
file = fopen(file_name, 'w'); 
fclose(file); 
file = fopen(file_name, 'a'); 
M = randn(5); 

for kk = 1:10 
    file = fopen(file_name, 'a'); 
    fprintf(file, 'Hi\n'); 
    fclose(file); 
    dlmwrite(file_name, M ,'-append', 'newline', 'pc'); 
    file = fopen(file_name, 'a'); 
    fprintf(file, 'Bye\n'); 
end 

如果沒有,只是嘗試打印與創建其他funcion矩陣和使用相同的文件處理程序爲fprintf

+0

不需要每次迭代後打開/關閉文件。看到我的解決方案 – 2013-02-14 17:58:41

+0

你說得對,其實甚至沒有必要添加'roffset'選項,關鍵是打開文件'a'而不是'w'選項,這也可以。無論如何,我的答案也奏效,雖然效率低下:) – guolas 2013-02-14 18:08:46

+0

是的,roffest不是必需的,只需要追加。 – 2013-02-14 18:12:45

4

使用本:

k=0; 

file = fopen('exp.txt','a'); 
while (k<10) 

    fprintf(file,'%s', 'Hello'); 

    dlmwrite('exp.txt',A ,'-append', 'roffset', 1, 'delimiter', ' ') 

    fprintf(file, '%s\n' , 'Goodbye'); 

    k= k+1; 
end