人。我無法在我的問題上找到答案。分別對兩個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,真棒!謝謝! –