下三角半定矩阵

4个视图(过去30天)
艾伯特·斯特林
艾伯特·斯特林 2020年5月4日
对于给定的半定矩阵,如何以这种形式构建稀疏矩阵?我只需要半定矩阵的稀疏下三角
例如半定矩阵Q0:
2 0 1
Q0=0.20
-1 0 2
其内容如下:
= [ 1. 2. 3. 3. ];
J = [ 1. 2. 3. 1. ];
C = [ 2. 0.2 2 - 1);
哪里 我显示行数
j表示列的数目
c是属于(i,j)的元素,它不是零,并且属于半定矩阵的下三角
2评论
纪尧姆
纪尧姆 2020年5月4日
艾伯特·斯特林 的评论被错误地贴在这里作为答案:
我需要一个简单的算法,选择非零值显示在这个对称矩阵的下三角形部分,并返回它如下:
我= [ 1. 2. 3. 3. ];
J = [ 1. 2. 3. 1. ];
C = [ 2. 0.2 2 - 1);
我需要的算法是灵活的,这样我就可以给它任何想要的对称矩阵,并有一个像上面提到的答案。

登录以发表评论。

公认的答案

纪尧姆
纪尧姆 2020年5月4日
[i,j,c]=find(tril(矩阵))
似乎就是你想要的。
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)

约翰·德雷科
约翰·德雷科 2020年5月4日
编辑:约翰·德雷科 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.92865 0
0 0 0.37763 0.42783 0
>>[Rind,Cind,val]=查找(万亿(A))
果皮=
1.
2.
5.
4.
5.
煤渣=
1.
1.
3.
4.
4.
瓦尔=
0.46421
0.26627
0.37763
0.92865
0.42783
这就是将下面的三角形提取成一组行和列索引以及这些位置上的非零元素的方法。从表面上看,这似乎是你的问题。然而,我猜您真的想从这些值构建稀疏矩阵吗?或者,也许你只是不明白稀疏矩阵已经在MATLAB中存在并且可以这样使用?根本不清楚真正的问题是什么。
不管怎样,如果您想将矩阵构建为稀疏矩阵,那么只需使用这些向量调用稀疏矩阵即可。
Atril=稀疏(外皮、灰烬、瓦尔、5,5)
心房=
(1,1) 0.46421
(2,1) 0.26627
(5,3) 0.37763
(4,4) 0.92865
(5,4) 0.42783
>>满(心房)
ans=
零点四六四二一零零零零
0.26627 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中查找宝藏,了解社区如何帮助您!

开始狩猎!