我有一个元胞数组,每个元胞都是一个 n×n 矩阵。我想删除 inv(cell{i}'*cell{i})
警告矩阵接近单数的单元格。
谢谢
最佳答案
一般来说,删除元素是比较容易的部分。如果 C
是您的数组,则可以通过以下方式删除向量 idx
中索引指定的单元格:
C(idx) = {};
关于您的具体问题,可以使用 rcond
来检查矩阵是否“几乎”是奇异的。 (如果结果接近于零,则可能是单数)。要将它应用于所有单元格,您可以按以下方式使用 cellfun
:
idx = cellfun(@(x)(rcond(x' * x) < 1e-12), C);
根据您的喜好调整阈值。生成的 idx
是一个逻辑数组,在奇异矩阵的位置有 1
。如上所示,使用 idx
从 C
中删除这些元素。
关于matlab - 删除满足特定条件的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14340713/