0

我在 matlab 中有一个 10x1整数值矩阵,如何将其写入*文本*文件?我在一个循环中,想要追加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);

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

4

3 回答 3

2

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

input=randi(100,500,10);

dlmwrite(outputFilename,input)

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

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

dlmwrite比较的另一个优点fprintfdlmwrite自动为您的输入数据选择正确的格式。

于 2012-08-24T08:01:18.513 回答
0

如果 reprVectors() 正在输出你所说的 10x1,那么试试这个小改动:

fprintf(fileID, "%d %d %d %d %d %d %d %d %d %d", temp);
于 2012-08-24T07:56:29.250 回答
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));

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

于 2012-08-24T08:02:33.110 回答