2016-06-24 44 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