如何在matlab中将矩阵附加到文件中的新行?

时间:2012-08-24 07:35:39

标签: matlab

我在matlab中有一个10x1 矩阵的整数值,如何将其写入 * text * 文件? 我处于一个循环中,想要追加超过500个这样的矩阵,每个都在一个新行上。

fileID = fopen('exp.txt','a');

[r,c] = size(newFinalTree);
for i=1:r
    j=1;
    val=newFinalTree(i,j);
    while val~=0
       temp=reprVectors(val,:); %%%write this matrix to the file
       fprintf(fileID,temp); %%%this line produces error saying invalid format
       j=j+1;
       val=newFinalTree(i,j);
    end    
end
fclose(fileID);

编写这样一个矩阵的最佳方法是什么,以便从c代码中读取文本文件很容易?

3 个答案:

答案 0 :(得分:2)

我认为最好的方法是将矩阵连接到500x10矩阵,然后使用dlmwrite

input=randi(100,500,10);

dlmwrite(outputFilename,input)

这比自己写的更容易出错,而且速度也快得多。

如果格式不合适,dlmwrite可以更改分隔符。

dlmwritefprintf相比的另一个优势是dlmwrite会自动为输入数据选择正确的格式。

答案 1 :(得分:0)

如果reprVectors()输出您正在谈论的10x1,那么尝试这个小改动:

fprintf(fileID, "%d %d %d %d %d %d %d %d %d %d", temp);

答案 2 :(得分:0)

如果您想存储真正的矩阵,mat2str(...)是您的朋友。你可以替换:

fprintf(fileID,temp); %%%this line produces error saying invalid format

使用:

fprintf(fileID,'%s\n',mat2str(temp))

或者,如果您希望文本文件中的行为temp =(某些矩阵):

fprintf(fileID,'temp = %s\n',mat2str(temp));

使用fscanf(...)读取它们应该很容易,并且记住矩阵分隔符是[],行分隔符是;,列分隔符是空格。< / p>