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

 채택된 답변

Birdman
Birdman 2018년 1월 18일

1 개 추천

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

댓글 수: 4

Hello, thank you for your time It's giving the following error. "Matrix dimensions must agree"
Birdman
Birdman 2018년 1월 18일
편집: Birdman 2018년 1월 18일
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 2018년 1월 18일
편집: Guillaume 2018년 1월 18일
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

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Guillaume
Guillaume 2018년 1월 18일

1 개 추천

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

카테고리

도움말 센터File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

태그

질문:

2018년 1월 18일

댓글:

2018년 1월 18일

Community Treasure Hunt

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

Start Hunting!

Translated by