Trying to Plot Temperature with Current Density
3 次查看(过去 30 天)
显示 更早的评论
Hello,
I am trying to plot temperature with current denstiy. However, I get the "vectors must be the same length" error.
This is the code:
clear all
clc
close all
J0ref=2e-7; % Saturation current density mA/cm2
Rs=0.001; % Series resistance k ohm cm2
Rp=1000; % Parallel resistance k ohm cm2
n= 1.5; % Diode ideality factor
Jsc=30; % Short circuit current density in mA/cm2
k=1.38e-23; % Boltzmann constant
Tref= 300 ; % Absolute Temperature
q= 1.6e-19; % Electric charge
Eg=1.12; % Band gap of Silicon
Vx=linspace(-1,1,200);
TT=[300 350 400];
for i=1:length(TT)
Vt=k*TT(i)/q; % Thermal voltage
J0(i)=(J0ref*(TT(i)/Tref)^(3/n))*exp(-q*Eg/(n*k)*(1/TT(i)-1/Tref));
J=J0(i)*(exp(Vx/(n*Vt))-1)+Vx/Rp-Jsc;
V=Vx+J.*Rs;
before=V(find(J<0)); after= V(find(J>0));
Voc(i)=(before(end)+after(1))/2;
Power=-J.*V;
maxpos=find(Power==max(Power));
Jm=J(maxpos);
Vm=V(maxpos);
DATA=[V' , J' , Power'];
FF(i)=-Jm*Vm/(Jsc*Voc(i));
eta(i)=FF(i)*Jsc*Voc(i)/100;
h1=figure
set(h1,'name','JV Special Topics','numbertitle','on')
set(gcf,'DefaultAxesBox','on'),
set(gcf,'DefaultAxesLineWidth',2) ,
set(0,'DefaultAxesFontSize',14),
plot(TT,J);
end
What do I do to make them the same length? thank you.
12 个评论
darova
2019-10-11
Put it outside the for loop
Tx=spline(-1:1,TT, linspace(-1,1,200) );
F1=spline(-1:1,FF, linspace(-1,1,200) );
plot(Tx,F1);
hold on
plot(TT,FF,'or')
hold off
And please use special button for code inserting

采纳的回答
Srivardhan Gadila
2019-10-10
You may use Interpolation to increase the number of elements in the "TT" to match the number of elements in the "J".
0 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Power Converters 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

