我有:
一個 3D 矩陣:A = (m, n, k)。
對應于第一個維度的每個索引的第三個維度的選擇陣列。idn = (m, 1) (其中任何 idn 的值是 [1,k] 中的隨機整數。
我需要捕獲二維矩陣 B (m,n),其中提到的 A 的第三維取自相應的選擇。例如:
idn(1) = 1;
idn(2) = k;
idn(j) = k-1;
然后:
B(1,:) = A(1,:,idn(1)) = A(1,:,1);
B(2,:) = A(2,:,idn(2)) = A(2,:,k);
B(j,:) = A(j,:,idn(j)) = A(j,:,k-1);
由于 idn 不是常數,一個簡單的squeeze也無濟于事。
我也試過下面的代碼,但它也不起作用。
B = A(:,:,idn(:));
如果有人能給我一個解決方案,我們將不勝感激。
uj5u.com熱心網友回復:
這可以用sub2indand來完成permute,但我能想到的最簡單的方法是手動使用線性索引:
A = rand(3, 4, 5); % example data
idn = [5; 1; 2]; % example data
ind = (1:size(A,1)).' size(A,1)*size(A,2)*(idn(:)-1); % 1st and 3rd dimensions
ind = ind size(A,1)*(0:size(A,2)-1); % include 2nd dimension using implicit expansion
B = A(ind); % index into A to get result
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/464729.html
