Error Message: 'Matrix dimensions must agree'

7 Ansichten (letzte 30 Tage)
Tristen Hernandez
Tristen Hernandez am 2 Nov. 2019
m%%Declare Variables:
n = [.1, 1.0, 1.5];
t= [0:.1:10];
k = 10 %N/m;
m = 5 %kg;
A = 5; %m (initial postion);
omega0 = sqrt(k/m);
omegad = omega0.*sqrt(1.-n.^2);
s=zeros(1,101);
v=zeros(1,101);
a=zeros(1,101);
s = exp(-n.*omega0.*t).*(A*cos(omegad.*t));
v = -n.*omega0.*exp(-n.*omega0.*t).*(A.*cos(omegad.*t))-exp(-n.*omega0.*t).*(A.*sin(omegad.*t).*omegad);
a = (-n.*omega0).^(2).*exp(-n.*omega0.*t).*(A.*cos(omegad.*t))+exp(-n.*omega0.*t).*(A.*sin(omegad.*t).*omegad)...
+exp(-n.*om
ega0.*t).*(A.*sin(omegad.*t))-exp(-n.*omega0.*t).*(A.*cos(omegad.*t).*omegad);
On line 26 (the s variable) I keep getting the error that the matrix dimensions do not agree and quite frankly I have no idea why, very new to the program and still trying to figure everything out. I appreciate any and all help.
I guess while I'm here I also have a question in that I want A to be a function of s, with it's initial condition being five, so how would I be able to rewrite A in terms of s after the initial run through of it being 5?
The release version is R2019a if that helps with answering.

Akzeptierte Antwort

KALYAN ACHARJYA
KALYAN ACHARJYA am 2 Nov. 2019
Bearbeitet: KALYAN ACHARJYA am 2 Nov. 2019
In the following expression
s = exp(-n.*omega0.*t).*(A*cos(omegad.*t));
n have length 3 and t have 101, how can you do element wise vector multiplecation.
As you defined
n =[.1, 1.0, 1.5];
t= [0:.1:10];

Weitere Antworten (1)

Tristen Hernandez
Tristen Hernandez am 2 Nov. 2019
Bearbeitet: Tristen Hernandez am 2 Nov. 2019
I was able to make the multiplication work by transforming the
t = [0:.1:10]
into
t = [0:.1:10]'
Now I'm trying to put these into a for loop that will use the time in increments of 20, so that I can print the results to a table, it's resulting in an error on line 35
%%Declare Variables:
n = [.1, 1.0, 1.5];
t= [0:.1:10]';
k = 10 %N/m;
m = 5 %kg;
A = 5; %m (initial postion);
omega0 = sqrt(k/m);
omegad = omega0.*sqrt(1.-n.^2);
s=zeros(1,101);
v=zeros(1,101);
a=zeros(1,101);
s = exp(-n.*omega0.*t).*(A*cos(omegad.*t));
v = -n.*omega0.*exp(-n.*omega0.*t).*(A.*cos(omegad.*t))-exp(-n.*omega0.*t).*(A.*sin(omegad.*t).*omegad);
a = (-n.*omega0).^(2).*exp(-n.*omega0.*t).*(A.*cos(omegad.*t))+exp(-n.*omega0.*t).*(A.*sin(omegad.*t).*omegad)...
+exp(-n.*omega0.*t).*(A.*sin(omegad.*t))-exp(-n.*omega0.*t).*(A.*cos(omegad.*t).*omegad);
fprintf("t(s) \t s(m) \t v(m/s) \t a (m/s^2) \t \n");
fprintf("-------------------------------------------------- \n");
for i= [1:20:101]
s(i) = exp(-n.*omega0.*i).*(A*cos(omegad.*i))
v(i) = -n.*omega0.*exp(-n.*omega0.*i).*(A.*cos(omegad.*i))-exp(-n.*omega0.*i).*(A.*sin(omegad.*i).*omegad);
a(i) = (-n.*omega0).^(2).*exp(-n.*omega0.*i).*(A.*cos(omegad.*i))+exp(-n.*omega0.*i).*(A.*sin(omegad.*i).*omegad)...
+exp(-n.*omega0.*i).*(A.*sin(omegad.*i))-exp(-n.*omega0.*i).*(A.*cos(omegad.*i).*omegad);
fprintf("%.4f \n", s(i));
fprintf("%.4f \n", v(i));
fprintf("%.4f \n", a(i));
end
The error reading "Unable to perform assignment because the left and right sides have a different number of elements." The error occurs in line 35.
Quite frankly I have very little idea in what I'm doing in regards to this program so I appreciate all the help. Should I just post this in a new question post?

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by