How to plot Temperature vs Efficiency curve using For loop and Linspace?
4 次查看(过去 30 天)
显示 更早的评论
I have written a code for a basic structure of solar cell. I need to plot Temperature vs Efficiency curve. But I am a little confused of how to plot Temperature vs Efficiency curve using For loop and linspace. Providing a snippet of my code below:
K=1.38*10^-23; % Boltezman Constant
T=300; %Temperature
q=1.6*10^(-19); %electron charge
R_s=2;
R_sh=100;
m=R_sh/(R_s+R_sh);
I_l=30*10^-3*156*156;
I_0=10^(-15)*156*156;
b=I_l-I_0;
a=linspace(0,b);
I=b-a;
I_sc=I_l-I_0;
x=I_l-I;
y=x/I_0;
V=((K*T)/q)*log(y);
V_0=m*V;
P=V_0.*I;
V_OC=(K*T/q)*log(I_l/I_0);
P1=V_OC*I_sc;
M=max(P);
ff=M/P1; %Formfactor
Eff=(P1*ff/2333.6)*100;
plot(V_0,I);
hold on
plot(V_0,P);
0 个评论
采纳的回答
Fabio Freschi
2022-6-2
I have commented your plots to avoid moltiple figures
% numebr of temperatures
nT = 100;
% temperature vector
T = linspace(273,318,nT).';
% preallocate efficiency vector
Eff = zeros(nT,1);
for i = 1:length(T)
K=1.38*10^-23; % Boltezman Constant
% T=300; %Temperature
q=1.6*10^(-19); %electron charge
R_s=2;
R_sh=100;
m=R_sh/(R_s+R_sh);
I_l=30*10^-3*156*156;
I_0=10^(-15)*156*156;
b=I_l-I_0;
a=linspace(0,b);
I=b-a;
I_sc=I_l-I_0;
x=I_l-I;
y=x/I_0;
V=((K*T(i))/q)*log(y);
V_0=m*V;
P=V_0.*I;
V_OC=(K*T(i)/q)*log(I_l/I_0);
P1=V_OC*I_sc;
M=max(P);
ff=M/P1; %Formfactor
Eff(i)=(P1*ff/2333.6)*100;
%plot(V_0,I);
hold on
%plot(V_0,P);
end
figure,plot(T,Eff);
0 个评论
更多回答(2 个)
Sriparna Barui
2022-6-3
1 个评论
Fabio Freschi
2022-6-3
The calculation of the dependance of the temperature on Voc and Isc is not a question related to matlab. You must find out the set of equations that link these quantities
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!