我有两个相同大小的马丁。第一个包含值,第二个元素包含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]
我认为这将分两步进行,但我无法让它发挥作用。
答案 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)
如果您的数组是a
和b
,并且b
是掩码数组,请尝试
a(find(b))
这不会在您的问题中按顺序生成输出。如果顺序很重要,请采用@Jonas的方法。