假设我有一个矩阵[1 2; 3 4],但我需要[0 0 0 0; 0 1 2 0; 0 3 4 0; 0 0 0 0],我现在该怎么做,但是有一个函数可以在一行内解决它吗?
答案 0 :(得分:2)
如果您有图像处理工具箱,请使用padarray
:
>> A = [1 2; 3 4];
>> B = padarray(A, [1 1])
B =
0 0 0 0
0 1 2 0
0 3 4 0
0 0 0 0
第一个输入是您要填充的矩阵,第二个输入是您想要查看的每个维度中沿边界的多少个零。你想要水平和垂直的1元素零边界,因此[1 1]
是必需的。
然而,我很困惑为什么你想要这个“一线”。如果你想要一个围绕原始矩阵的单元素边框,那么多行有什么问题?
A = [1 2; 3 4];
B = zeros(size(A) + 2);
B(2:end-1,2:end-1) = A;
这是三行代码,包括原始矩阵的定义,但每行都很清楚。您定义了一个新的矩阵,该矩阵与原始矩阵相比还有2个行和2个列,因为您希望在原始矩阵周围放置1个元素零边界,然后将其放在中间。