Why don't graphics appear for this code?
显示 更早的评论
Why don't graphics appear for this code?
% Variáveis
m = 112.34;
temp = 25;
ISC = 7.8;
VTR = 0.0257;
VT = 0.0257;
VCA = 32.7;
GR = 1000;
G = 700;
% Cálculo do IR
IR = 1000 * (ISC / (2.718*exp(VCA/(m*VTR))-1))
for V = 0:1:VCA
V1 = V*2
%Carcular a potencia máxima para G=1000
P = V1*IR*35
end
figure(1)
h=plot(V1,P);
set(h,'color',rand(1,3),'linewidth',2);
hold on
axis([0 200 0 40])
xlabel('Tensão')
ylabel('Potência')
title('Curva P-V')
采纳的回答
更多回答(3 个)
Nuno
2011-3-15
0 个投票
2 个评论
Walter Roberson
2011-3-15
You _can_ do it with a loop, provided that you store the V1 and P value that results from each loop. You aren't doing that now: each time through the loop, you are overwriting the previously calculated value.
Matt Tearle
2011-3-15
What Walter was saying above is that you don't *need* to have a loop -- his solution does the same thing, cleaner and simpler.
As an aside, note that 0:1:VCA will give you whole numbers from 0 up to 32, because VCA is 32.7. That is, the range operator in MATLAB is essentially "<=". Obviously I don't know your intention -- just wanted to make sure you're aware of that.
Nuno
2011-3-15
0 个投票
2 个评论
Walter Roberson
2011-3-15
Notice I used
V1 = (0:1:VCA).*2
But even without the multiplication by 2, I do not find any obvious error in P=V1.*IR.*35 . What error do you observe?
Matt Tearle
2011-3-15
Works fine for me:
m = 112.34;
temp = 25;
ISC = 7.8;
VTR = 0.0257;
VT = 0.0257;
VCA = 32.7;
GR = 1000;
G = 700;
% Cálculo do IR
IR = 1000 * (ISC / (2.718*exp(VCA/(m*VTR))-1));
V = 0:1:VCA;
V1 = V*2;
%Carcular a potencia máxima para G=1000
P = V1*IR*35;
figure(1)
h=plot(V1,P);
set(h,'color',rand(1,3),'linewidth',2);
hold on
axis([0 200 0 40])
xlabel('Tensão')
ylabel('Potência')
title('Curva P-V')
Nuno
2011-3-15
7 个评论
Walter Roberson
2011-3-15
The voltage does go up to there, but the axis() call forces all output values below 0 to be discarded.
I do not know what is being calculated (and would not necessarily understand it if you explained).
Question: why are you multiplying those values by 2.718 ? Isn't that just exp(1) ? So why not just add 1 to the value inside the exp() and not do the multiplication?
Nuno
2011-3-15
Walter Roberson
2011-3-15
The nepper number that is approximately 2.718 *is* exactly exp(1) .
Nuno
2011-3-15
Walter Roberson
2011-3-15
Use .^ instead of ^
Also, exp(expression) would be clearer than 2.718.^(expression)
Matt Tearle
2011-3-16
And, more importantly, correct. 2.718^x is an inaccurate version of exp(x).
Nuno
2011-3-16
类别
在 帮助中心 和 File Exchange 中查找有关 Mathematics 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!