2013-11-27 53 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

對不起,我不理解你。你是說你的解決方案爲你工作? –

相關問題