如何根据每个元素的值对3D矩阵进行排序?

11次浏览(过去30天)
你好,
我有一个3D矩阵(附)。我想要完成的是对这个矩阵进行排序,一个元素一个元素,这样当我可视化它时,最高值(s)朝向底部(即最后几行),反之亦然。
我尝试过排序/sortrows命令,但以我目前的知识还没有太大的成功。如果有人能把我推到正确的方向,我会很感激。

答案(2)

西蒙•陈
西蒙•陈 2021年8月24日
如果我理解正确的话,您希望最后几行有较大的值,而右下角有最大的值(最后一行和最后一列)。
如果不是这种情况,下面的代码将无法工作。
清晰;clc;
负载(“Numbers_3D.mat”);
[Ny,Nx,Nz] = size(num);
Sortnum = 0 (size(num));
k = 1:Nz
数据= num(:,:,k);
sortnum (:,:, k) = '(重塑(Nx排序(数据(:)),纽约));
结束

Wan霁
Wan霁 2021年8月24日
编辑:Wan霁 2021年8月24日
我认为你想做一些gif来显示数字是如何排序的?
%排序显示
%显示冒泡
clc;明确
%负载(“Numbers_3D.mat”);
% a = num(1:32,:,:);明确num
A =兰特(30,50,40);
[x, y, z] = meshgrid(1:尺寸(a, 1), 1:尺寸(a, 2), 1:尺寸(a, 3));
X = X (:);
Y = Y (:);
Z = Z (:);
Idx = sub2ind(size(a),x,y,z);
scatter3 (x, y, z, 10 (Idx),“填充”
平等的
% colr =灰色;
颜色=喷射;
Colr = Colr (end:-1:1,:);
colormap (colr)
视图(-163、-66)
K = 1:1:尺寸(a,1)
R = size(a,1):-1:k+1
I = 1:1:size(a,2)
J = 1:1:尺寸(a,3)
如果((k, i, j) < (r, i, j))
A ([k,r],i,j) = A ([r,k],i,j);
结束
结束
结束
scatter3 (y, x, z 10 (Idx),“填充”
视图(-163、-66)
包含(《维2》);ylabel (“维度1”);zlabel (“三维”);
平等的
colormap (colr);colorbar;
暂停(0.001)
结束
结束

s manbetx 845

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!