matlab - 如何在 Matlab 中裁剪任意维数的矩阵?

标签 matlab multidimensional-array crop

假设我有 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/

相关文章:

jquery - 在 DIV 中裁剪文本后添加 "..."的巧妙方法是什么?

linux - MATLAB (2013b) "doc"无法在 Linux 系统上从 Java 加载 libxul.so

python - 未从记录的搜索路径加载 DLL

java - Java 中的二维数组,按字符索引

python - 将列表插入特定索引处的二维列表

python - 在一行上打印 `numpy.ndarray`

ios - 如何使用 Swift 修剪视频文件并转换为 20 秒视频?

c# - 如何在 ASP.NET + C# 中裁剪 mp3?

matlab - matlab的latex解释器如何处理unicode?

matlab - 当条目很复杂且舍入错误导致问题时,删除向量中的重复条目