簡體   English   中英

在3D矩陣中查找值

[英]Find values in 3d matrix

我想做相當於

x = [1, 0, 3; 2, 3, 0; 0, 0, 3];
[yy, xx, vals] = find(x);

我真正需要vals變量的地方。 我需要全部三個,但是vals很重要。 現在考慮3d情況,然后翻轉一個,因此更有趣。

x = repmat(x, [1, 1, 3]);
x(:, :, 2) = fliplr(x(:, :, 1));

我想和以前一樣。 我在幾個地方發現了

[yy, xx, zz] = ind2sub(size(x), find(x));

但是然后我不知道如何正確提取vals ...我也不太在乎zz ,但是我敢肯定它們需要以某種方式用於索引。

任何幫助,將不勝感激。

如上一條語句中所述,使用一個輸出參數find

[yy, xx, zz] = ind2sub(size(x), find(x));

將線性索引返回到矩陣。 您可以使用這些來建立索引:

index = find(x);
vals = x(index);
[xx,yy,zz] = ind2sub(size(x), index);

考慮到您的最后一個矩陣x ,我不確定我是否了解要實現的目標

x = [1, 0, 3; 2, 3, 0; 0, 0, 3]
z = repmat(x, [1, 1, 3]);
x(:, :, 2) = fliplr(x(:, :, 1))

[yy, xx, vals] = find(x)

你有:

  • yy找到的元素的行的索引
  • xx找到的元素的列的索引

那么你可以使用

lin_idx=sub2ind(size(x),yy,xx)

獲得矩陣x內值的線性指數

現在您可以使用

[a,b,c]=ind2sub(size(x),lin_idx)

獲取矩陣中元素的3D索引

您可以使用該索引訪問值:

for i=1:length(a)
   k(i)=x(a(i),b(i),c(i))
end

現在,數組k包含值(按照find返回的數組vals )。

暫無
暫無

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

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