将每个数据保存在循环中作为matlab中的文本文件

时间:2013-02-28 10:32:18

标签: matlab loops text-files

我正在进行操作以获得矩阵M_T。该矩阵将保存到文本文件中。此文本文件将再次用作主数据文件。这必须重复100次。最后,我想将生成的100个文本文件中的所有数据保存到名为final_result.txt的单个文本文件中。我无法弄清楚如何在循环中以不同的名称保存不同的文本文件。我尝试编写以下代码。但它显示错误。

for k=1:100

fid = fopen('data1.txt'); 
A =  textscan(fid, '%f %f %f ') ;
%read the file
a = A{1};
b = A{2};
c = A{3};
p=[a b c];
p_t=p.';
M=rotationMatrix*p_t;
M_T=M.';


fid = fopen('data1.txt', 'wt');
fprintf(fid,' %f\t %f\t %f\n',M_T);
fclose(fid);

textfilename = ['result' num2str(k) '.txt'];
fid1 = fopen('result'k '.txt', 'wt');
fprintf(fid1,' %f\t %f\t %f\n',M_T);
fclose(fid1);

end

1 个答案:

答案 0 :(得分:1)

试试这个

textfilename = ['result' num2str(k) '.txt'];
fid1 = fopen(textfilename, Write);
...

这应该生成一个单独的文件resultk.txt,其中k = 1,...,100。 此外,您打开输入文件两次但只关闭一次。我认为在打开文件进行阅读之前关闭文件会更好,然后再打开它进行写入。 如果这不能解决问题,请尝试发布您获得的特定错误消息。

要将所有文件输出到主文件,请在循环开始之前执行此操作

fidresult = fopen('final_result.txt', Write);

然后在每次迭代

fprintf(fidresult,' %f\t %f\t %f\n',M_T);

然后在循环结束后

fclose(fidresult)

除了为每个循环迭代创建单独的文件外,这应该在每次迭代时将矩阵输出到主结果文件