标题:[求助]给定矩阵A,如何用matlab求解出所有的最高阶非零子式
只看楼主
gaoy1
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-7-2
结帖率:100%
已结贴  问题点数:20 回复次数:5 
[求助]给定矩阵A,如何用matlab求解出所有的最高阶非零子式
给定矩阵A,如何用matlab编程求解出所有的最高阶非零子式?
搜索更多相关主题的帖子: matlab 如何 
2013-07-02 08:39
cuirun
Rank: 2
等 级:论坛游民
帖 子:18
专家分:64
注 册:2006-4-6
得分:20 
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
2013-07-08 15:10
gaoy1
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-7-2
得分:0 
非常感谢
2013-07-09 22:58
gaoy1
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-7-2
得分:0 
其实有问题,秩如果是k,2楼的程序算的只是连续k行连续k列非零子式,实际上需要算的是任意k行k列的非零子式。
if rank(B)>0 改为 if det(B)~=0,B后加一行det(B)。

[ 本帖最后由 gaoy1 于 2013-7-10 00:30 编辑 ]
2013-07-10 00:26
cuirun
Rank: 2
等 级:论坛游民
帖 子:18
专家分:64
注 册:2006-4-6
得分:0 
回复 4楼 gaoy1
确实有问题 感谢你的建议
2013-07-11 10:23
cuirun
Rank: 2
等 级:论坛游民
帖 子:18
专家分:64
注 册:2006-4-6
得分:0 
修改了一下 这样应该可以:

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
2013-07-11 10:24



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-416486-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.478080 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved