我有数组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)
答案 0 :(得分:0)
你几乎拥有它。函数fprintf
和fclose
需要句柄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)