如何使用matlab中给定矩阵的顺序计算所有未成年人

时间:2014-01-01 21:40:51

标签: matlab matrix determinants

我有一个矩阵m * n, 我想要它的所有未成年人(子矩阵的决定因素)的顺序p。

我在文档中找不到任何好东西,我可以用我自己编写的函数来完成它,但我更喜欢开箱即用的东西。

我真正的需要是检查何时,在符号矩阵中,我的等级下降,并且当所有等级及以上的未成年人都为零时发生。

有任何想法用纯matlab命令吗?由于有一个评估排名的功能,它已经得到了未成年人。

3 个答案:

答案 0 :(得分:2)

似乎已经有了一些好的答案,但这里有一个简单的解释,你可以做什么:

假设您想知道矩阵i的每个j - M子矩阵的等级。

现在我相信最简单获取所有排名的方法是遍历所有行和列,并将此结果存储在矩阵R中。

M = magic(5);
R = NaN(size(M));
for i=1:size(M,1);
  for j=1:size(M,2);
    R(i,j) = rank(M([1:i-1 i+1:end],[1:j-1 j+1:end]));
  end
end

如果您希望所有决定因素将rank替换为det

答案 1 :(得分:1)

这计算子矩阵:

submatrix=@(M,r,c)M([1:r-1,r+1:end],[1:c-1,c+1:end])

您可以使用'arrayfun'和'meshgrid'或两个循环迭代所有子矩阵。

答案 2 :(得分:0)

警告:我没有符号工具箱但是对于常规的matlab数组,你可以用这样的匿名函数计算第i,第j个小调:

minor = @(i,j,A)det(A(setdiff([1:end],[i]),setdiff([1:end],[j])))

或者,如果你想要第i,第j个辅助因子,只需使用:

cofactor = @(i,j,A)(-1)^(i+j)*det(A(setdiff([1:end],[i]),setdiff([1:end],[j])))

但如上所述,我不知道这样的东西是否适用于符号工具箱。如果它不能按原样运行,或许这至少可以为你提供一些关于如何为符号案例实现函数的想法。

希望这有帮助。