将矩阵的下三角部分转换为matlab中的向量

时间:2015-04-28 19:42:26

标签: matlab matrix vector

a成为矩阵。如果下三角形部分中没有0元素,则下面的代码将它的下三角部分转移到矢量中。

a(find(tril(a,-1)))

那么,如果a的下三角部分有一些0元素,我该怎么办?非常感谢您的时间和关注。

1 个答案:

答案 0 :(得分:4)

使用mask -

%// Mask of lower triangular elements
mask = tril(true(size(a)),-1)

%// Use mask to select lower triangular elements from input array
out = a(mask)

或者,您可以使用bsxfun -

创建蒙版
mask = bsxfun(@gt,[1:size(a,1)]',1:size(a,2))

示例运行 -

>> a
a =
     1     3     0     2     1
     0     1     1     3     1
     0     2     2     1     2
     3     0     1     3     2
     3     3     3     0     3
>> out
out =
     0
     0
     3
     3
     2
     0
     3
     1
     3
     0