我有两个矩阵A和B,如下所示:
A = [1
2
3
4
5]
B = [10 11 12 13
15 16 17 18
17 12 15 13
20 21 22 17
40 41 32 33]
我希望以下面给出的形式将其输出到文本文件中:
所需的文字输出
1 10 11 12 13
2 15 16 17 18
3 17 12 15 13
4 20 21 22 17
5 40 41 32 33
我尝试使用此代码,但它不起作用:
clc
clear all
A = [1; 2; 3; 4; 5];
B = [10, 11, 12, 13;
15, 16, 17, 18;
17, 12, 15, 13;
20, 21, 22, 17;
40, 41, 32, 33;]
fid = fopen('output.dat', 'w');
fprintf(fid, '%f\t', A, [repmat('%f\t', 1, size(B, 2)) '\n'], B');
如何在MATLAB中用fprintf连接和输出矩阵?
答案 0 :(得分:1)
@Anatch的答案是对的,
这是一个示例代码,
clc
clear
A = [1; 2; 3; 4; 5];
B = [10, 11, 12, 13;
15, 16, 17, 18;
17, 12, 15, 13;
20, 21, 22, 17;
40, 41, 32, 33;];
C = horzcat(A, B);
fid = fopen('output.dat', 'w');
for ii = 1:size(C, 1)
for jj = 1:size(C, 2)
fprintf(fid, '%d\t', C(ii,jj));
end
fprintf(fid, '\n');
end
<强> Output.dat 强>
1 10 11 12 13
2 15 16 17 18
3 17 12 15 13
4 20 21 22 17
5 40 41 32 33
答案 1 :(得分:0)
你必须使用horzcat(A,B)方法:
horzcat将水平连接两个矩阵
答案 2 :(得分:0)
@Anatch是对的,您可以使用horzcat(A,B)
水平连接两个矩阵。虽然做同样事情的简单方法就是简单地说[A B]
,水平连接或[C; A]
垂直连接。
至于打印这些结果,@ SamuelNLP的解决方案是有效的,但这是一个替代方案,对于大型矩阵来说更快:
A = [1; 2; 3; 4; 5];
B = [10, 11, 12, 13;
15, 16, 17, 18;
17, 12, 15, 13;
20, 21, 22, 17;
40, 41, 32, 33;];
ALL = [A B];
ALL_cell = mat2cell(ALL, ones(size(ALL,1),1), size(ALL,2));
fID = fopen('output.dat','w');
f = @(x) fprintf(fID,'%s\n',sprintf('%f\t',x));
cellfun(f,ALL_cell);
fclose(fID);
在output.dat
:
1.000000 10.000000 11.000000 12.000000 13.000000
2.000000 15.000000 16.000000 17.000000 18.000000
3.000000 17.000000 12.000000 15.000000 13.000000
4.000000 20.000000 21.000000 22.000000 17.000000
5.000000 40.000000 41.000000 32.000000 33.000000