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

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

 Akzeptierte Antwort

Birdman
Birdman am 18 Jan. 2018
You don't need a loop. Try the following:
vac=exp(a).*exp(-v./(p.*T))

4 Kommentare

Hello, thank you for your time It's giving the following error. "Matrix dimensions must agree"
Birdman
Birdman am 18 Jan. 2018
Bearbeitet: Birdman am 18 Jan. 2018
It should not. Clear your workspace area and rerun the code.
a=1;
v=2;
p=1e-5;
T=[77,295,600,750,1234];
vac=exp(a).*exp(-v./(p.*T))
Guillaume
Guillaume am 18 Jan. 2018
Bearbeitet: Guillaume am 18 Jan. 2018
Note that the only operator that should absolutely be dotted is the ./. The others are multiplications with scalar so either .* or * work.
Thank you very much

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Guillaume
Guillaume am 18 Jan. 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

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Hilfe-Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by