如何使用滤镜矩阵选择Matrix元素

时间:2013-11-18 08:09:39

标签: matlab matrix

我有两个相同大小的马丁。第一个包含值,第二个元素包含0和1(如布尔值)。我现在希望我的第一个Matrix的所有元素都存储在一个数组中,其中第二个Matrix在同一个索引处有一个1。

也许一个例子说清楚:

Matrix 1:

a b c

d e f

g h i

Matrix 2:

0 1 1

1 0 0

0 0 1

输出: [b c d i]

我认为这将分两步进行,但我无法让它发挥作用。

2 个答案:

答案 0 :(得分:3)

这确实需要两个步骤。

%# transpose Matrix 1 because Matlab iterates by row first
matrix_1 = matrix_1';

%# read values (transpose M2 as well)
%# also transpose the result to get a row-vector
output = matrix_1(matrix_2')';

请注意,仅当matrix_2符合逻辑时,此索引操作才有效。如果不是,请改为编写logical(matrix_2)

答案 1 :(得分:2)

如果您的数组是ab,并且b是掩码数组,请尝试

a(find(b))

这不会在您的问题中按顺序生成输出。如果顺序很重要,请采用@Jonas的方法。