我正在解决涉及梁偏转的问题(这不太有趣: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/