Why don't graphics appear for this code?
Ältere Kommentare anzeigen
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')
Akzeptierte Antwort
Weitere Antworten (3)
Nuno
am 15 Mär. 2011
0 Stimmen
2 Kommentare
Walter Roberson
am 15 Mär. 2011
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
am 15 Mär. 2011
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
am 15 Mär. 2011
0 Stimmen
2 Kommentare
Walter Roberson
am 15 Mär. 2011
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
am 15 Mär. 2011
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
am 15 Mär. 2011
7 Kommentare
Walter Roberson
am 15 Mär. 2011
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
am 15 Mär. 2011
Walter Roberson
am 15 Mär. 2011
The nepper number that is approximately 2.718 *is* exactly exp(1) .
Nuno
am 15 Mär. 2011
Walter Roberson
am 15 Mär. 2011
Use .^ instead of ^
Also, exp(expression) would be clearer than 2.718.^(expression)
Matt Tearle
am 16 Mär. 2011
And, more importantly, correct. 2.718^x is an inaccurate version of exp(x).
Nuno
am 16 Mär. 2011
Kategorien
Mehr zu Mathematics finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!