簡體   English   中英

從 Matrix 3D 中獲取 Matrix 2D,其中給定的第三維對應於第一維

[英]Get Matrix 2D from Matrix 3D with a given choice of the third dimension corresponding to the first dimension

我有:

  • 矩陣 3D:A = (m, n, k)。

  • 對應於第一維的每個索引的第三維的選擇數組。 idn = (m, 1)(其中任意idn的取值是[1,k]中的隨機integer。

我需要捕獲二維矩陣 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(:));

如果有人能給我一個解決方案,我將不勝感激。

這可以通過sub2indpermute來完成,但我能想到的最簡單的方法是手動使用 線性索引

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM