0
我是matlab新手,所以我在查找執行此任務的最有效方法時遇到了一些問題。使用二元映射過濾多維數組(邏輯索引效率低下)
我試圖利用第二矩陣N.濾除一個矩陣M
M = AxBxCxD其中A,B,C,d爲〜150中的每個 N = AxBxC的數量級上。同上A,B,C。它的條目是二進制的。
我希望過濾矩陣M,以便它只包含數據,其中在N矩陣條目是1。另外,我希望它是一個二維陣列,其中SXD S是在N-
是1的元素數我曾嘗試兩種方法到目前爲止,這兩者要麼太內存密集型或慢:
1)
indx = find(N(:));
[X,Y,Z] = ind2sub(size(M),indx);
result = squeeze(M(X,Y,Z,:));
在第三時間,M(X,Y,Z的結果,: )是記憶力強大的方式。
2)
l = logical(N) ;
map = repmat(l,'length of D dimension');
M(map);
%Reduce dimension next
但計算的時間來建立repmat(1,280)是相當大的。
有沒有更有效的方法來計算這個結果。也許在M中沿着D維的每一行應用蒙版(我看着這個,但無法計算出任何東西)。
這是完美的!非常感謝! –