人。我无法在我的问题上找到答案。分别对两个3D阵列进行排序
比方说,我们有两个三维数组:
A=rand(10,10,3);
B=rand(10,10,3);
然后我们排序沿着第三个产品尺寸:
[sorted_A, idx] = sort(A,3);
我应该如何采取行动,设置第二阵列中相同的排序?
谢谢!
人。我无法在我的问题上找到答案。分别对两个3D阵列进行排序
比方说,我们有两个三维数组:
A=rand(10,10,3);
B=rand(10,10,3);
然后我们排序沿着第三个产品尺寸:
[sorted_A, idx] = sort(A,3);
我应该如何采取行动,设置第二阵列中相同的排序?
谢谢!
你需要线性索引,就像这样:
[ii jj ] = ndgrid(1:size(A,1),1:size(A,2));
sorted_B = B(sub2ind(size(A),repmat(ii,[1 1 size(A,3)]),repmat(jj,[1 1 size(A,3)]),idx));
通过对第一个矩阵进行排序,您可以获得每种排序的索引。
只是做C = B(idx)
(一维数组工作)
编辑
这是一个三维矩阵,但这个解决方案是不量化。
C = zeros(10,10,3);
for dim = 1:3
for it = 1:10
for jt = 1:10
C(it,jt,dim) = B(it,jt,idx(it,jt,dim));
end
end
end
谢谢@Luis Mendo,这个例子也会帮助我。我有这样的工作:) – Vuwox
@AlexandreBizeau我很高兴! –
@LuisMendo,真棒!谢谢! –