如何在Matlab文件中将矩阵附加到换行符?

How to append a matrix to a new line in a file in matlab?

我在Matlab中有一个10x1的整数值矩阵,如何将其写入行* text *文件?
我处于循环状态,并希望在新行中附加500多个这样的矩阵。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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代码读取文本文件的简便方法的最佳方法是什么?


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

1
2
3
input=randi(100,500,10);

dlmwrite(outputFilename,input)

这比自己编写错误要容易得多,而且速度也快得多。

如果格式不适合您,则dlmwrite可以更改定界符。

fprintf相比,dlmwrite的另一个优点是dlmwrite自动为输入数据选择正确的格式。


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

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

与:

1
2
fprintf(fileID,'%s\
',mat2str(temp))

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

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

使用fscanf(...)在C中读取它们应该很容易,并且要记住矩阵定界符是[],行定界符是;,列定界符是空格。


如果reprVectors()输出的是您要谈论的10x1,请尝试进行以下小的更改:

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