arrays - Matlab - 从矩阵中删除包含0的行和列

标签 arrays matlab matrix

我正在解决涉及梁偏转的问题(这不太有趣:P)

我需要将全局刚度矩阵减少为结构刚度矩阵,我通过从原始矩阵中删除包含 0 的任何行和列来实现此目的。

如果我有一个像这样的矩阵(我们称之为 K):

0   0   5   3   0   0
0   0   7   8   0   0
7   1   2   6   2   1
3   8   6   9   5   3
0   0   4   5   0   0
0   0   1   8   0   0 

简化后的矩阵(我们称之为 S)就是

2   6
6   9

这是我到目前为止所写的将全局矩阵 K 简化为刚度矩阵 S

S = K;

for i = 1:length(S(:,1))
    for j = 1:length(S(1,:))
        if  S(i,j) == 0
            S(i,:) = [];
            S(:,j) = [];
            break;
        end
    end
end

但是,我在包含“if”语句的行上得到“索引超出矩阵尺寸”,并且我不确定我的想法对于删除所有行和列的最佳方法是否正确。感谢任何反馈!

最佳答案

简单:

S = K(all(K,2), all(K,1));

关于arrays - Matlab - 从矩阵中删除包含0的行和列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26068486/

相关文章:

c - C 中带有指针的 int 矩阵 - 内存分配困惑

arrays - 是否可以使用索引数组对三维数组的二维进行索引?

python - 此 numpy 数组索引的较短版本

matlab - 用矩阵中值附近的插值替换 NaN 值

python - Sympy 在求解方程时返回 ConditionSet 对象,而 matlab 在求解相同方程时返回单个 float

matlab - 加速用最后一个非 Nan 值替换 NaN

matlab - 带汉宁窗的傅立叶滤波后信号恢复

java - 数组中的多个对象(java)

c++ - 插入数组的额外字符

javascript - 在 $q.all() 中从 json 对象字符串值创建一个 Promise 数组