首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在matlab中用给定的矩阵阶数计算所有的未成年人

如何在matlab中用给定的矩阵阶数计算所有的未成年人
EN

Stack Overflow用户
提问于 2014-01-01 21:40:50
回答 3查看 6.2K关注 0票数 2

我有一个矩阵m*n,我想从它中得到p阶的所有次矩阵(子矩阵的行列式)。

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

我真正的需要是检查一下,在一个象征性的矩阵中,我的排名何时下降,而当这个级别及以上的所有未成年人都为零时,我才会这样做。

有什么办法用纯matlab组件来做吗?因为有一个函数来评估等级,所以它以某种方式得到了未成年人。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-02 13:33:01

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

假设您想知道矩阵M的每个j次矩阵的秩。

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

代码语言:javascript
复制
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

票数 2
EN

Stack Overflow用户

发布于 2014-01-01 23:13:04

这将计算子矩阵:

代码语言:javascript
复制
submatrix=@(M,r,c)M([1:r-1,r+1:end],[1:c-1,c+1:end])

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

票数 1
EN

Stack Overflow用户

发布于 2014-01-01 23:13:12

注意:我没有符号工具箱,但是对于普通的matlab数组,您可以使用这样的匿名函数来计算i-th,j-小数:

代码语言:javascript
复制
minor = @(i,j,A)det(A(setdiff([1:end],[i]),setdiff([1:end],[j])))

或者,如果您想要i-th,j-th辅助因子,只需使用:

代码语言:javascript
复制
cofactor = @(i,j,A)(-1)^(i+j)*det(A(setdiff([1:end],[i]),setdiff([1:end],[j])))

但是,正如前面提到的,我不知道这样的东西是否能与符号工具箱一起工作。如果它不能按原样工作,也许这至少可以给您一些关于如何为符号案例实现函数的想法。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20873574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档