我在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代码中读取文本文件很容易?
答案 0 :(得分:2)
我认为最好的方法是将矩阵连接到500x10
矩阵,然后使用dlmwrite
。
input=randi(100,500,10);
dlmwrite(outputFilename,input)
这比自己写的更容易出错,而且速度也快得多。
如果格式不合适,dlmwrite
可以更改分隔符。
dlmwrite
与fprintf
相比的另一个优势是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>