下三角半定矩阵

4个视图(过去30天)
如何为一个给定的半定矩阵建立这种形式的稀疏矩阵?我只需要半定矩阵的稀疏下三角
例如半定矩阵Q0:
2 0 1
Q0 = 0 0.2 0
1 0 2
写为:
1 2 3. 3. ];
j 1 2 3. 1 ];
c 2 0.2 2 - 1);
在哪里 I表示行数
J表示列数
c是属于(i,j)不为零的元素属于半定矩阵的下三角
2的评论
Guillaume
Guillaume 2020年5月4日
阿尔伯特·斯特灵 被误贴为“答案”的评论被移到了这里:
我需要一个简单的算法,选择非零值在显示这个对称矩阵的下三角形部分,并返回如下:
我= 1 2 3. 3. ];
j 1 2 3. 1 ];
c 2 0.2 2 - 1);
我需要算法是灵活的,所以我可以给它任何想要的对称矩阵,并有一个答案,就像刚才提到的。

登录发表评论。

接受的答案

Guillaume
Guillaume 2020年5月4日
[i, j, c] = find(tril(yourmatrix))
看来这就是你想要的。
1评论
阿尔伯特·斯特灵
阿尔伯特·斯特灵 2020年5月4日
非常感谢你这么快就解决了这个问题。
然而,我自己发现了一个很长的,如下所示:
Q0 = [2 0 0.2;
0 2 0;
0.2 0 -0.2)
[c] =大小(Q0);
i = 1: c
j = 1:3-i
Q0(我+ j) = 0;
结束
结束
Q1 =稀疏(Q0);
[i, j s] =找到(Q1);
f = (i, j s) '

登录发表评论。

答案(1)

约翰D 'Errico
约翰D 'Errico 2020年5月4日
编辑:约翰D 'Errico 2020年5月4日
你只需要下面的三角形元素。半确定性与你最后的要求无关。
一个= sprand(5 5。3);
> >全部(A)
ans =
0.46421 0.83266 0 0.022104 0.18026
0.26627 0 0 0 0
0 0 0 0 0 0
0 0 0 0.92865 0
0 0 0.37763 0.42783 0
>> [Rind,Cind,val] = find(trl (A))
皮=
1
2
5
4
5
Cind =
1
1
3.
4
4
val =
0.46421
0.26627
0.37763
0.92865
0.42783
这就是如何将下三角形提取到一组行和列索引中,以及这些位置上的非零元素。从表面上看,这似乎是你的问题。然而,我的猜测是你真的想从这些值构建稀疏矩阵吗?或者,也许你只是不理解稀疏矩阵已经存在于MATLAB中,并可以这样使用?根本不清楚真正的问题是什么。
不管怎样,如果你想构建一个稀疏的矩阵,那就用那些向量调用稀疏。
Atril =稀疏(皮、Cind val 5 5)
Atril =
0.46421 (1,1)
0.26627 (2, 1)
0.37763 (5,3)
0.92865 (4, 4)
0.42783 (5,4)
> >全部(Atril)
ans =
0.0.464 21 0 0 0 0
0.26627 0 0 0 0
0 0 0 0 0 0
0 0 0 0.92865 0
0 0 0.37763 0.42783 0
1评论
阿尔伯特·斯特灵
阿尔伯特·斯特灵 2020年5月4日
谢谢,你的解决方案似乎是解决这个问题的好方法。再次感谢你。

登录发表评论。

标签

s manbetx 845


释放

R2019b

社区寻宝

在MATLAB中央找到宝藏,并发现社区可以如何帮助你!

开始狩猎!