2016-01-20 74 views
-1

我有以下:multimensional陣列查找值

A=[2,3,4] 

A(:,:,1) = 
    0.9572 0 1 
    0 0.1419 0.9157 
A(:,:,2) = 
    0  0.9575 0 
    0.5469 1 0.9706 
... 

我想找到乙與0和1之間的值,矩陣A的各列,併爲每個5片。

A(:,:,1)我會得到:

0.9572 0.1419 0.9157 

A(:,:,2)我會得到:

0.5469 0.9575 0.9706 

在結束矩陣B是B(1,3,4)。

任何建議這樣做?

感謝

+0

所以你想要在每個切片中不同於0和1的元素?所有切片中這些元素的數量是否相同? –

+0

是的,我想寫每個列中的0和1之間的元素(我將有3列),每個片(我會得到4片)。 – Ana

+0

元素的數量是相同的所有切片 – Ana

回答

0

我想這你想要做什麼:

s = size(A, 3);       %// number of slices 
B = reshape(A, [], s);     %// collapse first two dimensions into one 
ind = (B>0) & (B<1);     %// logical index of desired values 
result = B(ind);      %// index into B. Gives a column vector 
result = reshape(result, 1, [], s);  %// reshape into desired form 
+0

好吧,我錯了:值的數量(0和1之間)可以改變列,所以我不能摺疊它.... – Ana

0

值不是針對每個片相同的號碼,你必須與電池陣列的工作:

B = cellfun(@(values) values(0 < values & values < 1),... %// Take values between 0 and 1 for each slice 
      squeeze(num2cell(A, [1 2])),...    %// To cell array, each slice into a cell 
      'UniformOutput', false);      %// Output is (and has to be) a cell array 
B{1} %// 0.9572 0.1419 0.9157 
B{2} %// 0.5469 0.9575 0.9706