2013-11-27 21 views
0

人。我无法在我的问题上找到答案。分别对两个3D阵列进行排序

比方说,我们有两个三维数组:

A=rand(10,10,3); 
B=rand(10,10,3); 

然后我们排序沿着第三个产品尺寸:

[sorted_A, idx] = sort(A,3); 

我应该如何采取行动,设置第二阵列中相同的排序?

谢谢!

回答

2

你需要线性索引,就像这样:

[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)); 
+0

谢谢@Luis Mendo,这个例子也会帮助我。我有这样的工作:) – Vuwox

+0

@AlexandreBizeau我很高兴! –

+0

@LuisMendo,真棒!谢谢! –

1

通过对第一个矩阵进行排序,您可以获得每种排序的索引。

只是做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 
+0

您的解决方案将与一维数组才有效。 –

+0

是的,我知道了。我正在研究3D排序,现在。 – Vuwox

+0

对不起,我不理解你。你是说你的解决方案为你工作? –

相关问题