Ima*_*man 4 matlab move matrix
让我们假设A是一个5x5的零矩阵:
>> A = zeros(5)
A =
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
B是一个小的矩阵(2x2):
>> B = ones(2)
B =
1 1
1 1
Run Code Online (Sandbox Code Playgroud)
现在,我正在寻找代表矩阵的16种不同情况 C1, C2, C3, ..., C16
哪个是:
C1 =
1 1 0 0 0
1 1 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
C2 =
0 0 0 0 0
1 1 0 0 0
1 1 0 0 0
0 0 0 0 0
0 0 0 0 0
C3 =
0 0 0 0 0
0 0 0 0 0
1 1 0 0 0
1 1 0 0 0
0 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
......最后C16等于:
C16 =
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 1 1
0 0 0 1 1
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,它就像较小的矩阵(B)在较大的一个(A)内移动.
非常感谢,
您可以circshift(...)在适当的行和列上实现所需的操作,以移动有关Matrix的值.您提到的示例是页面的"移动矩阵元素"部分中显示的示例,其中包含4x4矩阵.
举个例子
A = [1 1 0 0; 1 1 0 0; 0 0 0 0; 0 0 0 0]
A =
1 1 0 0
1 1 0 0
0 0 0 0
0 0 0 0
Y = circshift(A,[1 1])
Y =
0 0 0 0
0 1 1 0
0 1 1 0
0 0 0 0
Run Code Online (Sandbox Code Playgroud)
在Mathworks网站上,有一个内置函数,它看起来就像你想要的那样.在5x5矩阵上显示16个组合的精确代码可以保持小矩阵在大矩阵中移动的错觉
编辑:所以它现在有一个5x5x16矩阵,输出称为C
A=zeros(5,5);
A(1:2,1:2)=1
c=1;C=zeros(5,5,16);
for i=0:3
for j=0:3
C(:,:,c)=circshift(A,[i j])
c=c+1;
end
end
Run Code Online (Sandbox Code Playgroud)
产生输出(注意输出未编辑)
A =
1 1 0 0 0
1 1 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
ans =
1 1 0 0 0
1 1 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
ans =
0 1 1 0 0
0 1 1 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
ans =
0 0 1 1 0
0 0 1 1 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
ans =
0 0 0 1 1
0 0 0 1 1
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
ans =
0 0 0 0 0
1 1 0 0 0
1 1 0 0 0
0 0 0 0 0
0 0 0 0 0
ans =
0 0 0 0 0
0 1 1 0 0
0 1 1 0 0
0 0 0 0 0
0 0 0 0 0
ans =
0 0 0 0 0
0 0 1 1 0
0 0 1 1 0
0 0 0 0 0
0 0 0 0 0
ans =
0 0 0 0 0
0 0 0 1 1
0 0 0 1 1
0 0 0 0 0
0 0 0 0 0
ans =
0 0 0 0 0
0 0 0 0 0
1 1 0 0 0
1 1 0 0 0
0 0 0 0 0
ans =
0 0 0 0 0
0 0 0 0 0
0 1 1 0 0
0 1 1 0 0
0 0 0 0 0
ans =
0 0 0 0 0
0 0 0 0 0
0 0 1 1 0
0 0 1 1 0
0 0 0 0 0
ans =
0 0 0 0 0
0 0 0 0 0
0 0 0 1 1
0 0 0 1 1
0 0 0 0 0
ans =
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
1 1 0 0 0
1 1 0 0 0
ans =
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 1 1 0 0
0 1 1 0 0
ans =
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 1 1 0
0 0 1 1 0
ans =
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 1 1
0 0 0 1 1
Run Code Online (Sandbox Code Playgroud)