Matlab triu函数向量

时间:2014-01-22 13:07:46

标签: matlab matrix

我有一个矩阵A,

A = [1 2 0; 4 5 6; 7 8 9;]

1   2   0
4   5   6
7   8   9

Matlab有一个triu函数,它执行以下操作,

triu(A)

1   2   0
0   5   6
0   0   9

我需要一个像这样的函数给我一个这样的矢量:

triu_vector(A) - > [1 2 0 5 6 9]

PS:A的Trianguler矩阵可能包含0。这就是为什么我不能使用Matlab的nonzeros函数。

2 个答案:

答案 0 :(得分:4)

如果订单无关紧要:

A(triu(true(size(A)))).'

如果订单 重要:

A = A.';
A(tril(true(size(A)))).'

答案 1 :(得分:3)

你可以这样做:

A = [1 2 0; 4 5 6; 7 8 9;];

I = true(size(A));
At = A';
At(tril(I))'

然后

ans =

   1   2   0   5   6   9