2016-01-20 41 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