我有以下问题:
编写一个程序,以便:
程序将输入矩阵分为两个子矩阵.
示例代码
A = input('Enter a matrix:')
% A = magic(5) % for example
[filA, colA] = size(A);
if rem(colA,2)==1
A = [A, zeros(filA,1)]
colA = colA + 1;
end
A1 = A(:, [1:colA/2])
A2 = A(:, [1+(colA/2):colA])
%B发布于 2018-02-03 02:55:34
以下是我提出的解决办法:
A = [1 2 3; 1 2 3; 1 2 3; 1 2 3];
[A_r,A_c] = size(A);
if (mod(A_c,2) ~= 0)
A = [A zeros(A_r,1)];
A_c = A_c + 1;
end
off = A_c / 2;
A1 = A(:,1:off);
A2 = A(:,(off+1):A_c);
B = reshape([A1(:) A2(:)].',2*A_r,[])它利用重塑函数来交织矩阵A1和A2的行。通过在最后一行的末尾省略;,让Matlab在控制台中打印最终计算的输出,即:
B =
1 2
3 0
1 2
3 0
1 2
3 0
1 2
3 0使用一步一步的调试方法,您可以看到每个步骤是如何执行的。
发布于 2018-02-02 17:10:51
我的解决方案
clear all, clc;
A = input('Ingrese una matriz:')
[filA, colA] = size(A);
if rem(colA,2)==1
A = [A, zeros(filA,1)]
colA = colA + 1;
end
A1 = A(:, [1:colA/2])
A2 = A(:, [1+(colA/2):colA])
B = A2([1;1]*(1:size(A2,1)),:)
B(1:2:end,:) = A1https://stackoverflow.com/questions/48574117
复制相似问题