我有一个矩阵m * n, 我想要它的所有未成年人(子矩阵的决定因素)的顺序p。
我在文档中找不到任何好东西,我可以用我自己编写的函数来完成它,但我更喜欢开箱即用的东西。
我真正的需要是检查何时,在符号矩阵中,我的等级下降,并且当所有等级及以上的未成年人都为零时发生。
有任何想法用纯matlab命令吗?由于有一个评估排名的功能,它已经得到了未成年人。
答案 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])))
但如上所述,我不知道这样的东西是否适用于符号工具箱。如果它不能按原样运行,或许这至少可以为你提供一些关于如何为符号案例实现函数的想法。
希望这有帮助。