How to fix a graph with loop
1 次查看(过去 30 天)
显示 更早的评论
Sorry, I am new to MATLAB, so bear with me. I am trying to plot a graph which shows me the values of Y_B for T = 600:10:850, where k1, k2 and k3 vary with T. Instead, I am given a blank graph with only 599 to 601 on the x axis. Heres my matlab code
MATLAB code
for i = 1:25
T(i) = 600+10i;
k1(i) = 10^7*exp(-12700/T(i));
k2(i) = 5*10^4*exp(-10800/T(i));
k3(i) = 7*10^7*exp(-15000/T(i));
t = 0.2;
Y_B(i) = (k1(i)*t*(k1(i)+k3(i)))/(((k2(i)*t)+1)*(k1(i)+k3(i))*(1+(t*(k1(i)+k3(i)))));
end
plot(T(i),Y_B(i));
0 个评论
采纳的回答
Birdman
2018-1-31
You do not need for loop:
T=600:10:850;
t = 0.2;
k1 = 10^7.*exp(-12700./T);
k2 = 5*10^4.*exp(-10800./T);
k3 = 7*10^7.*exp(-15000./T);
Y_B = (k1.*t.*(k1+k3))./(((k2.*t)+1).*(k1+k3).*(1+(t.*(k1+k3))));
plot(T,Y_B);
7 个评论
Jan
2018-1-31
@sophp: Remember that [] is the operator for a vertical or horizontal concatenation. While 1:2:20 is a vector, concatenating it with nothing by [1:2:20] replies a vector again. Therefore both produce exactly the same object.
It is not easy to suggest an improvement, because I cannot imagine why you want to assign a vector to the scalar t(i). Most of all the vector is static and does not depend on the loop, so why assigning it in each iteration? What about:
t = 1:2:20;
T = 600:10:850;
for i=1:numel(T)
k1(i) = 1e7 .* exp(-12700 ./ T(i));
k2(i) = 5e4 .* exp(-10800 ./ T(i));
k3(i) = 7e7 .* exp(-15000 ./ T(i));
Y_B = (k1(i) .* t .* (k1(i)+k3(i))) ./ (((k2(i).*t)+1) .* ...
(k1(i)+k3(i)) .* (1+(t(i) .* (k1(i)+k3(i)))));
plot(t, Y_B);
end
I'm not sure if this is what you want. But it is very similar to Bordman's code, which you have accepted already.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!