Matrix Dimensions must agree

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 comentarios

KSSV
KSSV el 19 de Oct. de 2020
You need to rethink on your code.....it completely looks meaning less...
Kane Patrick Bobier
Kane Patrick Bobier el 19 de Oct. de 2020
This code is for a stiffness matrix of a rod with four elements. I just need help putting together the final global stiffness matrix.

Iniciar sesión para comentar.

Respuestas (1)

Asad (Mehrzad) Khoddam
Asad (Mehrzad) Khoddam el 19 de Oct. de 2020

0 votos

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 comentarios

Kane Patrick Bobier
Kane Patrick Bobier el 19 de Oct. de 2020
Where should I place this? Thank you for the reply!
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

Iniciar sesión para comentar.

Preguntada:

el 19 de Oct. de 2020

Comentada:

el 19 de Oct. de 2020

Community Treasure Hunt

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

Start Hunting!

Translated by