matlab - 删除满足特定条件的单元格

标签 matlab matrix

我有一个元胞数组,每个元胞都是一个 n×n 矩阵。我想删除 inv(cell{i}'*cell{i}) 警告矩阵接近单数的单元格。 谢谢

最佳答案

一般来说,删除元素是比较容易的部分。如果 C 是您的数组,则可以通过以下方式删除向量 idx 中索引指定的单元格:

C(idx) = {};

关于您的具体问题,可以使用 rcond 来检查矩阵是否“几乎”是奇异的。 (如果结果接近于零,则可能是单数)。要将它应用于所有单元格,您可以按以下方式使用 cellfun:

idx = cellfun(@(x)(rcond(x' * x) < 1e-12), C);

根据您的喜好调整阈值。生成的 idx 是一个逻辑数组,在奇异矩阵的位置有 1。如上所示,使用 idxC 中删除这些元素。

关于matlab - 删除满足特定条件的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14340713/

相关文章:

algorithm - 计算给出数组中最小标准偏差的子集

c - C 中的矩阵乘法 - 结果矩阵中的错误值

Java - ArrayList<Integer>[][] 可能吗?

matlab - 在 MATLAB 中使用第一维索引及其相应的第二维索引列表对 3D 矩阵进行切片?

algorithm - 如何获得两个信号的定量比较

MATLAB - 编辑框的回调执行

python - 使用 scipy.sparse.bmat 从子 block 创建非常大的稀疏矩阵时出错

c++ - 0、800、600、0 与 0、800、0、600 OpenGL

arrays - 在锯齿状的二维网格上向外螺旋

matlab - Matlab-vision.VideoFileReader从不读取音频样本