In an assignment A(:) = B, the number of elements in A and B must be the same.
1 回表示 (過去 30 日間)
古いコメントを表示
Hi all
I'm working on a code for my numerical differential equations class and Ive run into some trouble.. I'm fairly new with matlab. I'm creating a code to perform the euler method on a system of four second order differential equations. So, I created an m. file with my function which puts the 8 first order equations into a matrix. I then use this file to perform the euler method on the matrix, however when I run the program it gives me back the error "In an assignment A(:) = B, the number of elements in A and B must be the same.". as far as I can tell both the input matrix from the function and the output matrix from the for loop should have the same number of rows so it should work fine, no? any help would be great, Thanks!
%function code
function dx = projectmatrix2(t,u1,u2,u3,theta)
k1 = 200000;
k2 = 95000;
k3 = 35000;
m1 = 2.5;
m2 = 2.5;
m3 = 325;
c = 1500;
r = 1;
I = 93;
dx = zeros(8,1);
dx(1) = u1(2);
dx(2) = ((k1 - k2)/m1)*u1 + (k3/m1)*u3 + (c/m1)*u1(2) -(c/m1)*u3(2);
dx(3) = u2(2);
dx(4) = ((k1-k3)/m2)*u2 +(k3/m2)*u3 + (c/m2)*u2(2) - (c/m2)*u3(2);
dx(5) = u3(2);
dx(6) = (k2/m3) *u1 + (k3/m3)*u2 + ((-k2-k3)/m3) *u3 -(c/m3)*u1(2) - (c/m3)*u2(2) + ((2*c)/m3)*u3(2);
dx(7) = theta(2);
dx(8) = -((r*k3)/I)*u1 + ((r*k3)/I)*u2 - ((r*k3 + r*k2)/I)*u3;
end
%new file with euler method applied
Tsim = 4;
h = .1;
N = Tsim/h;
x = zeros(8,N);
x(1,1) = 2;
x(2,1) = 0;
x(3,1) = 0;
x(4,1) = 0;
x(5,1) = 0;
x(6,1) = 0;
x(7,1) = 0;
x(8,1) = 0;
t = zeros(1,N);
for k=1:N-1
t(k+1) = t(k) + h;
x(:,k+1) = x(:,k) + h * projectmatrix2(t(k),x(1:2,k),x(3:4,k),x(5:6,k),x(7:8,k));
end
0 件のコメント
採用された回答
Andrew Newell
2017 年 4 月 17 日
Look at the first part of a line of code in projectmatrix.m:
dx(2) = ((k1 - k2)/m1)*u1
On the left side, you have a scalar. On the right, you have a vector u1 of length 2. Another term in this line is (c/m1)*u1(2), so perhaps you mean to write
dx(2) = ((k1 - k2)/m1)*u1(1)
Note that there are several more uses of u1, u2 and u3 that have the same problem.
0 件のコメント
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!