如何在文本文件中编写矩阵?

时间:2015-06-26 22:30:49

标签: matlab

我有数组a=[1 2 3 4 5 6],还有数组b=[9 8 7 6 5 4]; 有2 * 6矩阵p=[a; b],我的意思是p=[1 2 3 4 5 6; 9 8 7 6 5 4]; 我想在文件中写入矩阵p但是6 * 2,我的意思是结果是

[1 9; 2 8;3 7; 4 6;5 5; 3 4]

这是一个正确的matlab代码吗?

ff = fopen('final.txt','wt');
fprintf(final, '%f\n', p)
fclose(final) 

2 个答案:

答案 0 :(得分:0)

你几乎拥有它。函数fprintffclose需要句柄ff作为第一个参数。然后你必须在输出格式的定义中添加第二列,如%f\t%f\n\t会生成一个标签,\n会生成换行符。

将其更改为此代码,它将按预期工作:

a = [1 2 3 4 5 6];
b = [9 8 7 6 5 4];
p = [a; b];

ff = fopen('filename.txt','wt');
fprintf(ff,'%f\t%f\n', p);
fclose(ff);

该文件如下所示:

1.000000    9.000000
2.000000    8.000000
3.000000    7.000000
4.000000    6.000000
5.000000    5.000000
6.000000    4.000000

如果您希望解决方案分别使用可变行数(在p)列(在文件中),那么您可以将行更改为以下行:

fprintf(ff,[repmat('%f\t',1,size(p,1)-1),'%f\n'], p);

这会动态生成正确数量的%f\t所需

如果您不想要浮点数,请将%f更改为%d。或者找到您选择的格式here。您可以简单地使用空格代替\t,但是当存储不同长度的数字时,输出不会对齐。

答案 1 :(得分:0)

除非你想使用低级函数,否则你也可以使用csvwrite。

csvwrite( 'final.txt', p)