How to remove null matrices from a multidemensional array?
1 次查看(过去 30 天)
显示 更早的评论
Hi, I'd like to remove all null matrices from a 3-dimensional array.
Suppose I have the following 3x3x5 multidimensional matrix, where the first and the third matrices are null. ¿How can I remove the null matrices such that the resulting multidimensional matrix is 3x3x3?
Matrix(:,:,1) =
0 0 0
0 0 0
0 0 0
Matrix(:,:,2) =
-0.6842 0.8145 0.7498
0.8353 1.5250 0.0004
-1.5288 0.4317 1.3572
Matrix(:,:,3) =
0 0 0
0 0 0
0 0 0
Matrix(:,:,4) =
1.4528 0.0807 0.3814
-0.1675 -0.7258 1.0134
-0.1237 -0.3353 0.6182
Matrix(:,:,5) =
1.2482 0.1368 0.8166
0.8369 1.8682 -0.6398
-1.0774 -1.1223 0.8522
Thanks for your help!
0 个评论
采纳的回答
Max Heiken
2021-6-10
编辑:Max Heiken
2021-6-10
You could identify the all zero pages and remove them like this:
Matrix(:, :, ~any(Matrix, [1, 2])) = [];
更多回答(1 个)
Steven Lord
2021-6-10
Use the capability of the any function to accept a vector of dimensions over which to operate.
z = zeros(3);
r = @() rand(3);
M = cat(3, z, r(), z, r(), r())
whichPagesHaveData = any(M, [1 2])
M2 = M(:, :, whichPagesHaveData)
isequal(M(:, :, 4), M2(:, :, 2)) % page 4 of M is page 2 of M2 by the way we constructed M
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrices and Arrays 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!