2016-06-24 75 views
0

數據我有以下功能:Matlab的:打印在特定的行

function [] = Write(iteration) 
status=close('all'); 
nomrep=num2str(iteration); 
fid=fopen('ID.dat','a'); 
frewind(fid); 
for l=1:iteration 
    line=fgetl(fid); 
end 
fprintf(fid,[nomrep,' \n']); 
status=fclose(fid); 
end 

我希望Write(15)在15日線的begining連續行創建ID.dat並打印2和15。

但是將這些值始終打印在文件的開頭。

即使我單獨嘗試了fgetl(fid),並且也替換爲循環,while循環仍然無效。

是不是因爲我應該在那之前用一些虛擬空間來填充行?沿邊這,我執行

for i=1:5 Write(i); end

這應該打印1至5中的每一行,但即使這是行不通的。

+0

網上我發現了另一種方式,即使不工作 '函數[] =寫2(迭代)' '狀態=關閉( '所有'); nomrep = num2str(iteration); fid = fopen('ID.dat','w'); tline = fgets(fid); for l = 1:iteration tline = fgets(fid); 結束 fprintf(fid,[nomrep,'\ n']); status = fclose(fid); 結束 ' – Soyol

回答

0

這條線的問題是:你打開文件

fid=fopen('ID.dat','w'); 

每次,要覆蓋以前的內容(也就是'w'說法做什麼)。將'w'更改爲'a'(用於追加),並且您的文件將保留從一次寫入到下一次寫入的內容。

+0

感謝您的答覆,但它仍然在行8函數調用'寫在沒有例如打印8(8)' – Soyol

+0

看來,如果該文件是空的MATLAB不計的線條,使我想把虛擬字母放在每一行上,然後在我喜歡的行中打印我想要的參數。 所以下面我打印所有20行中的'a': 'iteration = 20;' 'fid = fopen('ID.dat','w');' '對於k = 1:迭代' 'fprintf (fid,'\ n%s','a');' 'end' 'status = fclose(fid);' 'fclose('all');' 現在我將函數調用爲Write 8),但它不會在第8行打印8並將其打印在ID.dat文件的末尾,儘管我已經通過frewind(fid)重置了行指針; – Soyol