假设我有 4D 矩阵:
>> A=1:(3*4*5*6);
>> A=reshape(A,3,4,5,6);
现在我想切割给定数量的行和列(或已知尺寸的任何给定 block )。
如果我知道它是 4D 我会写:
>> A1=A(1:2,1:3,:,:);
但是如何针对任意给定的维数进行通用写入呢?
下面给出了一些不同的东西:
>> A2=A(1:2,1:3,:);
下面给出了一个错误:
>> A2=A;
>> A2(3:3,4:4)=[];
最佳答案
可以使用您使用的第二种索引形式和 reshape 函数生成具有一般维数 A
的代码。
这里有一个例子:
Asize = [3,4,2,6,4]; %Initialization of A, not seen by the rest of the code
A = rand(Asize);
%% This part of the code can operate for any matrix A
I = 1:2;
J = 3:4;
A1 = A(I,J,:);
NewSize = size(A);
NewSize(1) = length(I);
NewSize(2) = length(J);
A2 = reshape(A1,NewSize);
A2
将是您的裁剪矩阵。它适用于您选择的任何 Asize
。
关于matlab - 如何在 Matlab 中裁剪任意维数的矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33608066/