编程论坛
注册
登录
编程论坛
→
Matlab
[求助]给定矩阵A,如何用matlab求解出所有的最高阶非零子式
gaoy1
发布于 2013-07-02 08:39, 1784 次点击
给定矩阵A,如何用matlab编程求解出所有的最高阶非零子式?
5 回复
#2
cuirun
2013-07-08 15:10
A=[ 1 -2 2 3;
-2 4 -1 3;
-1 2 0 3;
0 6 2 3;
2 -6 3 4];
[R,C] = size(A);
Rank = rank(A);
count = 0;
for i = 1 : R-Rank+1
for j = 1 : C-Rank+1
B = A(i:i+Rank-1,j:j+Rank-1);
if rank(B)>0
B
count = count + 1;
end
end
end
count
#3
gaoy1
2013-07-09 22:58
非常感谢
#4
gaoy1
2013-07-10 00:26
其实有问题,秩如果是k,2楼的程序算的只是连续k行连续k列非零子式,实际上需要算的是任意k行k列的非零子式。
if rank(B)>0 改为 if det(B)~=0,B后加一行det(B)。
[
本帖最后由 gaoy1 于 2013-7-10 00:30 编辑
]
#5
cuirun
2013-07-11 10:23
回复 4楼 gaoy1
确实有问题 感谢你的建议
#6
cuirun
2013-07-11 10:24
修改了一下 这样应该可以:
A=[ 1 -2 2 3;
-2 4 -1 3;
-1 2 0 3;
0 6 2 3;
2 -6 3 4];
[R,C] = size(A);
Rank = rank(A);
count = 0;
for i = 1 : R-Rank+1
for j = 1 : C-Rank+1
B = A(i:i+Rank-1,j:j+Rank-1);
if rank(B) == Rank
B
count = count + 1;
end
end
end
count
1