how can I store this data in an array using loop?

1 visualizzazione (ultimi 30 giorni)
Hello. I am trying to run the below code. but its not working. I want to run the loop 5 times and calculate the value of x for 5 temperatures and store in a matrix.
please help. thanks
a=1;
v=2;
p=1e-5;
vac=zeros(1,5);
T=[77,295,600,750,1234];
for i=1:length(T)
x=exp(a)*exp(-v/(p*T));
vac(i)=x;
end

Risposta accettata

Birdman
Birdman il 18 Gen 2018
You don't need a loop. Try the following:
vac=exp(a).*exp(-v./(p.*T))
  4 Commenti
Guillaume
Guillaume il 18 Gen 2018
Modificato: Guillaume il 18 Gen 2018
Note that the only operator that should absolutely be dotted is the ./. The others are multiplications with scalar so either .* or * work.

Accedi per commentare.

Più risposte (1)

Guillaume
Guillaume il 18 Gen 2018
You forgot to mention what it is not working mean: You get error using / Matrix dimensions must agree. That's because you forgot to index T so you're dividing a scalar by a vector which is not a valid matrix operation, so one way to fix your problem:
x = exp(a)* exp(-v/(p*T(i)));
However, you don't need a loop at all, you could use vectorised operations. For that you need to use ./ instead of /:
a = 1; v = 2; p = 1e-5; %constants
T = [77, 295, 600, 750, 1234];
vac = exp(a)*exp(-v./(p*T)) %no loop needed

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by