【发布时间】:2026-02-13 09:15:02
【问题描述】:
我知道一个矩阵说mat,如果我想删除所有满足特定条件的元素(元素方面),例如删除所有零,这样就可以了:
mat(mat == 0) = [];
但是我怎样才能在子矩阵方面做到这一点,即在给定条件下删除矩阵子矩阵元素。例如,data4d 是一个大小为 n1 x n2 x n3 x n4 的 4D 矩阵。如果第四维的i-th(1=<i<=n4)子矩阵的所有元素,即data4d(:, :, :, i) == zeros(n1, n2, n3),则将其删除,即data4d(:, :, :, i) = []。
如果没有简单的for 循环,我怎么能做到这些?以下两个版本都不行:
data4d(data4d == zeros(n1, n2, n3)) = []; // version 1
data4d(data4d == zeros(n1, n2, n3, 1)) = []; // version 2
【问题讨论】: