Matlab优雅地添加行和列

Matlab优雅地添加行和列,matlab,image-processing,matrix,vectorization,linear-algebra,Matlab,Image Processing,Matrix,Vectorization,Linear Algebra,假设我们有以下随机矩阵: 1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 我想将其转换为以下内容: 1 0 2 0 3 0 4 0 0 0 0 0 0 0 0 0 5 0 6 0 7 0 8 0 0 0 0 0 0 0 0 0 9 0 8 0 7 0 6 0 0 0 0 0 0 0 0 0 5 0 4 0 3 0 2 0 0 0 0 0 0 0 0 0 由于某些原因,我不能使用mathjax格式,所以它看起来有点糟糕,对此表示抱歉。重点是,我想在当前行和列之间添加一行和一列的

假设我们有以下随机矩阵:

1 2 3 4
5 6 7 8
9 8 7 6
5 4 3 2
我想将其转换为以下内容:

1 0 2 0 3 0 4 0
0 0 0 0 0 0 0 0
5 0 6 0 7 0 8 0
0 0 0 0 0 0 0 0
9 0 8 0 7 0 6 0
0 0 0 0 0 0 0 0
5 0 4 0 3 0 2 0
0 0 0 0 0 0 0 0
由于某些原因,我不能使用mathjax格式,所以它看起来有点糟糕,对此表示抱歉。重点是,我想在当前行和列之间添加一行和一列的零,以便将其大小增加2倍

我想出了下面的代码,但它只适用于非常小的矩阵,如果我在一个大的图像上使用它,它无法完成由于内存限制的问题

clear all

I=imread('image.png');
I=rgb2gray(I);

B=zeros(2*size(I));

[x, y]=find(-inf<I<inf);

xy=[x,y];
nxy=xy;

%coord change
nxy=2*xy-1;

B(nxy(:,1),nxy(:,2))=I(xy(:,1),xy(:,2)); 
全部清除
I=imread('image.png');
I=RGB2灰色(I);
B=零(2*尺寸(I));

[x,y]=find(-inf如果你看一下你的索引向量,这就像是一个2x2矩阵的
I([1,2],[1,2,1]);
,这意味着你对每一行和每一列进行了两次索引。正确的解决方案是
B(1:2:end,1:2:end)=I;
每隔一行和每一列对其进行索引。

这也可以通过一行进行,假设原始矩阵称为
A
,然后

kron(A,[1,0;0,0])

请注意,mathjax之所以不能工作,仅仅是因为堆栈溢出不支持它:)它有时会被忽略,但许多可能会大量使用它的问题无论如何都是离题的。(你的不是。)就是这样。干杯这应该是解决方案的首选方案,至少对于二维阵列是如此
kron
做的正是需要做的,而且更具普遍性。