注册 登录
编程论坛 Matlab

[求助]给定矩阵A,如何用matlab求解出所有的最高阶非零子式

gaoy1 发布于 2013-07-02 08:39, 1784 次点击
给定矩阵A,如何用matlab编程求解出所有的最高阶非零子式?
5 回复
#2
cuirun2013-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
gaoy12013-07-09 22:58
非常感谢
#4
gaoy12013-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
cuirun2013-07-11 10:23
回复 4楼 gaoy1
确实有问题 感谢你的建议
#6
cuirun2013-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