我有一个矩阵m*n,我想从它中得到p阶的所有次矩阵(子矩阵的行列式)。
我在文档中没有发现任何好的东西,我可以用我自己编写的函数来完成它,但是我更喜欢开箱即用。
我真正的需要是检查一下,在一个象征性的矩阵中,我的排名何时下降,而当这个级别及以上的所有未成年人都为零时,我才会这样做。
有什么办法用纯matlab组件来做吗?因为有一个函数来评估等级,所以它以某种方式得到了未成年人。
发布于 2014-01-02 13:33:01
似乎已经有了一些好的答案,但这里有一个简单的解释,说明你能做什么:
假设您想知道矩阵M的每个j次矩阵的秩。
现在,我相信获得所有级别最简单的方法是遍历所有行和列,并将结果存储在矩阵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。
发布于 2014-01-01 23:13:04
这将计算子矩阵:
submatrix=@(M,r,c)M([1:r-1,r+1:end],[1:c-1,c+1:end])您可以使用'arrayfun‘和'meshgrid’,或者使用两个循环来迭代所有子矩阵。
发布于 2014-01-01 23:13:12
注意:我没有符号工具箱,但是对于普通的matlab数组,您可以使用这样的匿名函数来计算i-th,j-小数:
minor = @(i,j,A)det(A(setdiff([1:end],[i]),setdiff([1:end],[j])))或者,如果您想要i-th,j-th辅助因子,只需使用:
cofactor = @(i,j,A)(-1)^(i+j)*det(A(setdiff([1:end],[i]),setdiff([1:end],[j])))但是,正如前面提到的,我不知道这样的东西是否能与符号工具箱一起工作。如果它不能按原样工作,也许这至少可以给您一些关于如何为符号案例实现函数的想法。
希望这能有所帮助。
https://stackoverflow.com/questions/20873574
复制相似问题