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代码读取文本文件的简便方法的最佳方法是什么?
-
reprVectors返回什么? 我认为fprintf的第二个参数必须是字符串。 您可以这样输入一个整数:fprintf(fileID," int 1是%d,int 2是%d",myInt1,myInt2); 因此字符串中的%d是整数的位置
我认为最好的方法是将矩阵连接成500x10矩阵,然后使用dlmwrite。
这比自己编写错误要容易得多,而且速度也快得多。
如果格式不适合您,则dlmwrite可以更改定界符。
与fprintf相比,dlmwrite的另一个优点是dlmwrite自动为输入数据选择正确的格式。
如果要存储真实矩阵,mat2str(...)是您的朋友。 您可以替换:
1
| fprintf(fileID,temp ); %%%this line produces error saying invalid format |
与:
或者,如果您希望文本文件中的行为temp =(某些矩阵):
使用fscanf(...)在C中读取它们应该很容易,并且要记住矩阵定界符是[],行定界符是;,列定界符是空格。
如果reprVectors()输出的是您要谈论的10x1,请尝试进行以下小的更改:
1
| fprintf(fileID," %d %d %d %d %d %d %d %d %d %d", temp); |