I am trying to plot x and v equation for different value of m ... please take alook and kindly guid me through this
m = [10,20,30,40];
k = 50;
x0=0.01;
v0=0.2;
d=size(m);
dt = 0.001;
t = 0:dt:10;
for l=0:d
wn(l) = sqrt(k(l)/m(l));
s1(l) = 1i*sqrt(k(l)/m(l));
s2(l) = -1i*sqrt(k(l)/m(l));
C1(l) = (-v0+x0*s2(l))/(s2(l)-s1(l));
C2(l) = (v0-x0*s1(l))/(s2(l)-s1(l));
x(l) = C1(l)*exp(s1(l)*t)+C2(l)*exp(s2(l)*t);
v(l) = C1(l)*s1(l)*exp(s1(l)*t)+C2(l)*s2(l)*exp(s2(l)*t);
end
figure;
subplot(211),plot(t,x,'r--'); xlabel('Time'), ylabel('Displacement')
subplot(212),plot(t,v,'r--'); xlabel('Time'), ylabel('Displacement')

 Respuesta aceptada

the cyclist
the cyclist el 14 de Oct. de 2015
Editada: the cyclist el 14 de Oct. de 2015

1 voto

You have at least three problems with your code that I can see.
First, in the line
wn(l) = sqrt(k(l)./m(l));
you are trying to access the "0th" element of the array wn, but that does not exist. MATLAB uses 1-based indexing, so you need to start from 1.
Second, you are using the "/" and "*" operators, but those are for matrix division and multiplication. You probably want "./" and ".*" for all of those.
Third, I think you want to use "t(l)" instead of "t" in your for loop.

Más respuestas (1)

Chad Greene
Chad Greene el 14 de Oct. de 2015

0 votos

You can't start indexing with zero. You'll have to do for l = 1:length(m)

1 comentario

ashkan hosseini
ashkan hosseini el 14 de Oct. de 2015
thanks ... but there is a problem with loop and this error ''the number of elements in B and I must be the same''

Iniciar sesión para comentar.

Categorías

Más información sobre Loops and Conditional Statements en Centro de ayuda y File Exchange.

Preguntada:

el 14 de Oct. de 2015

Editada:

el 14 de Oct. de 2015

Community Treasure Hunt

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

Start Hunting!

Translated by