在MATLAB中向特定点添加值

时间:2017-03-13 16:07:13

标签: arrays matlab matrix

为了创建桁架的全局刚度矩阵,我需要将刚度矩阵覆盖到全局矩阵。 我首先创建了一个零矩阵

K=zeros(6,6); %Empty global stiffness matrix

然后我想将4x4矩阵(Ke)叠加到正确的位置。例如:

Ke(1,1)->K(1,1)
Ke(1,2)->K(1,2)
Ke(1,3)->K(1,5)
Ke(1,4)->K(1,6)
Ke(2,1)->K(2,1)
Ke(2,2)->K(2,2)
Ke(2,3)->K(2,5)
Ke(2,4)->K(2,6)
etc.

我找到了一段可行的代码,但我担心我无法理解为什么。这是:

sctr = [2*n1-1 2*n1 2*n2-1 2*n2];
K(sctr,sctr) = K(sctr,sctr) + Ke;

按照上面的示例n1n2应为n1=1n2=3。 n1和n2对应于元素的开始和结束节点。当然,这将在一个循环内部,该循环将计算每个元素的刚度矩阵并将其覆盖到全局矩阵。

1 个答案:

答案 0 :(得分:1)

对于n1n2的给定值,sctr

sctr = [1 2 5 6];

这与您要更改的行和列索引相对应。 K(sctr,sctr)选择K的4x4子矩阵。 Matlab为sctr中每个元素的可能组合选择一个元素。因此,对于每个选定的行(即其索引在sctr中),选择其索引为sctr的列。有关详细信息,请参阅matrix indexing