Why don't graphics appear for this code?

3 Ansichten (letzte 30 Tage)
Nuno
Nuno am 15 Mär. 2011
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

Walter Roberson
Walter Roberson am 15 Mär. 2011
Each time through the loop you replace V1 and P, so at the end of the loop you only have a single point to plot.
Try
V1 = (0:1:VCA).*2; P = V1.*IR.*35;
with no loop.

Weitere Antworten (3)

Nuno
Nuno am 15 Mär. 2011
Why i can´t make loop?
  2 Kommentare
Walter Roberson
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
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.

Melden Sie sich an, um zu kommentieren.


Nuno
Nuno am 15 Mär. 2011
But if i change to V1= 0:0.1:VCA appear error in P=V1.*IR.*35...
  2 Kommentare
Walter Roberson
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
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')

Melden Sie sich an, um zu kommentieren.


Nuno
Nuno am 15 Mär. 2011
Yes, the code works... Thanks! But now i have a new problem...
When i complile de program, the graphs should give a value of voltage (V) up to 32,7 but the value is ~12,5. Why?
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));
V1 = (0:0.1:VCA);
ICC = ISC * (G/GR);
I = ICC - IR.*(2.718.*exp(V1./(m.*VT))-1);
ICC1 = ISC * ((G+100)/GR);
I1 = ICC1 - IR.*(2.718.*exp(V1./(m.*VT))-1);
ICC2 = ISC * ((G+200)/GR);
I2 = ICC2 - IR.*(2.718.*exp(V1./(m.*VT))-1);
ICC3 = ISC * ((G+300)/GR);
I3 = ICC3 - IR.*(2.718.*exp(V1./(m*VT))-1);
ICC4 = ISC * ((G+400)/GR);
I4 = ICC4 - IR.*(2.718.*exp(V1./(m*VT))-1);
%Carcular a potencia máxima para G=1000
P = V1.*I3;
figure(1)
j=plot(V1,P);
set(j,'color',rand(1,3),'linewidth',2);
hold on
axis([0 40 0 100])
xlabel('Tensão(V)')
ylabel('Potência')
title('Curva P-V')
figure(2)
h=plot(V1,I,V1,I1,V1,I2,V1,I3,V1,I4);
set(h,'color',rand(1,3),'linewidth',2);
hold on
axis([0 40 0 40])
xlabel('Tensão(V)')
ylabel('Corrente')
title('Curva I-V')
  7 Kommentare
Matt Tearle
Matt Tearle am 16 Mär. 2011
And, more importantly, correct. 2.718^x is an inaccurate version of exp(x).
Nuno
Nuno am 16 Mär. 2011
The error is in another count... Thanks for the help...

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Mathematics finden Sie in Help 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