如何在MATLAB中连接fprintf中的两个矩阵?

时间:2015-06-12 11:37:48

标签: matlab matrix

我有两个矩阵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连接和输出矩阵?

3 个答案:

答案 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