Matrix Dimensions must agree

1 次查看(过去 30 天)
Hi everyone, I am having trouble getting my code to run. (Specifically line 71, inside the for loop GK). I don't get it because I use a similar code in line 51-58:
clc;
clear;
close all;
prompt = 'Specifiy Node Value';
N = input(prompt)
A1 = 0.05;
K1 = 125;
L1 = 0.6;
Q1 = 0;
A2 = 0.08;
K2 = 80;
L2 = 0.7;
Q2 = 100;
A3 = 0.7;
K3 = 100;
L3 = 0.2;
Q3 = 0;
A4 = 0.01;
K4 = 150;
L4 = 0.5;
Q4 = 200;
NS = N/4
NS = round(NS)
NES = NS-2
K1 = ((A1*K1)/L1)*[1,-1;-1,1];
K2 = ((A2*K2)/L2)*[1,-1;-1,1];
K3 = ((A3*K3)/L3)*[1,-1;-1,1];
K4 = ((A4*K4)/L4)*[1,-1;-1,1];
GK1 = zeros(NES+1,NES+1);
GK2 = zeros(NES+1,NES+1);
GK3 = zeros(NES+1,NES+1);
GK4 = zeros(NES+1,NES+1);
GK5 = zeros(N,N);
for k = 1:NES,
GK1(k:k+1,k:k+1) = (GK1(k:k+1,k:k+1)+K1);
GK2(k:k+1,k:k+1) = (GK2(k:k+1,k:k+1)+K2);
GK3(k:k+1,k:k+1) = (GK3(k:k+1,k:k+1)+K3);
GK4(k:k+1,k:k+1) = (GK4(k:k+1,k:k+1)+K4);
end
GK1
GK2
GK3
GK4
ProtoGK = {GK1,GK2,GK3,GK4};
Nu = numel(ProtoGK);
Nu
GK = zeros(1+Nu,1+Nu);
for k = 1:Nu,
GK(k:k+1,k:k+1) = (GK(k:k+1,k:k+1) + ProtoGK{k});
end
GK
  2 个评论
KSSV
KSSV 2020-10-19
You need to rethink on your code.....it completely looks meaning less...
Kane Patrick Bobier
Kane Patrick Bobier 2020-10-19
This code is for a stiffness matrix of a rod with four elements. I just need help putting together the final global stiffness matrix.

请先登录,再进行评论。

回答(1 个)

Asad (Mehrzad) Khoddam
change the varibales to vector form:
A=[0.05, 0.08, 0.7, 0.01];
E=[125, 80, 100, 150];
L=[0.6, 0.7, 0.2, 0.5];
ndof=length(A)+1;
KG = zeros(ndof, ndof);
for i = length(A)
k=A(i)*E(i)/L(i) * [1, -1; -1, 1]
dof = [i, i+1];
KG(dof, dof) = KG(dof, dof) + k;
end
  2 个评论
Kane Patrick Bobier
Kane Patrick Bobier 2020-10-19
Where should I place this? Thank you for the reply!
Asad (Mehrzad) Khoddam
Replace your code with the new one, I modified some parts,
A=[0.05, 0.08, 0.7, 0.01];
E=[125, 80, 100, 150];
L=[0.6, 0.7, 0.2, 0.5];
Q=[0, 100, 0, 200];
ndof=length(A)+1;
KG = zeros(ndof, ndof);
for i = 1:length(A)
k=A(i)*E(i)/L(i) * [1, -1; -1, 1];
dof = [i, i+1];
KG(dof, dof) = KG(dof, dof) + k;
end
KG

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by