Array indices must be positive integers or logical values Error

I'm trying to execute this for loop and I keep coming up with same error. I don't understand why this is happening so if you could help at all it would be greatly appreciated.
for t= linspace(0,99)
C_1=x0;
C_2=x0_dot+(Wn*x0);
x(t)= (C_1 + (C_2*t))*exp(-Wn*t);
end

 Réponse acceptée

madhan ravi
madhan ravi le 4 Nov 2018
Modifié(e) : madhan ravi le 4 Nov 2018
t= linspace(0,99);
for i = 1:numel(t)
C_1=x0;
C_2=x0_dot+(Wn*x0);
x(i)= (C_1 + (C_2*t(i)))*exp(-Wn*t(i));
end
plot(t,x)
if x0, x0_dot and Wn are scalars meaning a single number then you can do something like:
t = linspace(0,99);
C_1=x0;
C_2=x0_dot+(Wn*x0);
x = (C_1 + (C_2.*t)).*exp(-Wn.*t);
plot(t,x)

7 commentaires

madhan ravi
madhan ravi le 4 Nov 2018
Modifié(e) : madhan ravi le 4 Nov 2018
Note : some of your parameters are not defined , I suspect you don't need loop for your case
Thank you but I get a new error on both options about the multiplication.
Error using * Incorrect dimensions for matrix multiplication. Check that the number of columns in the first matrix matches the number of rows in the second matrix. To perform elementwise multiplication, use '.*'.
Error in Lab2 (line 23) x = (C_1 + (C_2.*t))*exp(-Wn.*t);
just put .* instead of *
Thanks if you don't mind me asking why doesn't the first option work when x0,x0_dot and Wn are scalars?
actually the first option works but its useless to use a loop if you can do it directly why go around if you can take a shortcut?
thanks I was following a flowchart and confused the for for the if loop I get it now thank you

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

Produits

Version

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by