下三角半定矩阵

8次浏览(过去30天)
对于一个给定的半定矩阵,如何建立这种形式的稀疏矩阵?我只需要半定矩阵的稀疏下三角
例如半定矩阵Q0:
2 0 -1
Q0 = 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] = find(Q1);
f = (i, j s) '

登录评论。

更多答案(1)

约翰D 'Errico
约翰D 'Errico 2020年5月4日
编辑:约翰D 'Errico 2020年5月4日
你只需要下面的三角形元素。半确定性与你最后的要求无关。
A =弹簧(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.92865 0
0 0 0.37763 0.42783 0
>>[皮,Cind,val] = find(tril(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 = sparse(Rind,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.46421 0 0 0 0
0.26627 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日
谢谢,你的解决方案似乎是解决这个问题的好方法。再次感谢。

登录评论。

类别

了解更多稀疏矩阵帮助中心而且文件交换

标签

下载188bet金宝搏


释放

R2019b

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!

翻译的