Clear Filters
Clear Filters

Line in Matlab plot do not appear

10 views (last 30 days)
I am self studying Matlab and I want to create a plot with electron concentration and inverse temperature as the picture shows:
% Constants
k = 1.38e-23; % Boltzmann's constant (J/K)
Eg = 1.12; % Energy band gap of silicon (eV)
A = 2.5e19; % Constant for intrinsic carrier concentration calculation
Nc = 2.8e19; % Effective density of states in conduction band (cm^-3)
Nd = 1e16; % Doping concentration (cm^-3)
% Temperature range
T = linspace(100, 1000, 100); % Temperature range from 100 K to 1000 K
% Electron concentration for n-type doping
n = (Nc * Nv)^0.5 * exp(-Eg./(2*k*T));
% Calculate ln(n)
ln_n = log(n);
% Calculate 1/T
inv_T = 1 ./ T;
% Plot
plot(inv_T, ln_n, 'r', 'LineWidth', 2);
xlabel('1/T');
ylabel('ln(N_D)');
title('ln(Electron Concentration) vs. 1/T for Silicon');
grid on;
Does anyone knows ?

Accepted Answer

Walter Roberson
Walter Roberson on 4 May 2024
Moved: Walter Roberson on 4 May 2024
Your exp() results in extremely small values, so you are getting NaN
Q = @(v) sym(v);
Nv = Q(1e23); %guess to run the program
% Constants
k = Q(1.38e-23); % Boltzmann's constant (J/K)
Eg = Q(1.12); % Energy band gap of silicon (eV)
A = Q(2.5e19); % Constant for intrinsic carrier concentration calculation
Nc = Q(2.8e19); % Effective density of states in conduction band (cm^-3)
Nd = Q(1e16); % Doping concentration (cm^-3)
% Temperature range
T = linspace(100, 1000, 100); % Temperature range from 100 K to 1000 K
% Electron concentration for n-type doping
n = (Nc * Nv)^0.5 * exp(-Eg./(2*k*T));
% Calculate ln(n)
ln_n = log(n);
% Calculate 1/T
inv_T = 1 ./ T;
TTTT = ln_n(1:2).'
TTTT = 
[vpa(TTTT(1)),vpa(TTTT(2))]
ans = 
double(TTTT)
Error using mupadengine/feval2char
Singularity.

Error in sym/double (line 755)
Xstr = feval2char(symengine, "symobj::double", S);
% Plot
plot(inv_T, ln_n, 'r', 'LineWidth', 2);
xlabel('1/T');
ylabel('ln(N_D)');
title('ln(Electron Concentration) vs. 1/T for Silicon');
grid on;
  1 Comment
Walter Roberson
Walter Roberson on 4 May 2024
Doing the log operation directly:
Q = @(v) sym(v);
Nv = Q(1e23); %guess to run the program
% Constants
k = Q(1.38e-23); % Boltzmann's constant (J/K)
Eg = Q(1.12); % Energy band gap of silicon (eV)
A = Q(2.5e19); % Constant for intrinsic carrier concentration calculation
Nc = Q(2.8e19); % Effective density of states in conduction band (cm^-3)
Nd = Q(1e16); % Doping concentration (cm^-3)
% Temperature range
T = linspace(100, 1000, 100); % Temperature range from 100 K to 1000 K
% Electron concentration for n-type doping
ln_n = 0.5*log(Nc * Nv) + (-Eg./(2*k*T));
ln_n(1:5).'
ans = 
double(ans)
ans = 5x1
1.0e+20 * -4.0580 -3.7198 -3.4337 -3.1884 -2.9758
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
% Calculate 1/T
inv_T = 1 ./ T;
% Plot
plot(inv_T, ln_n, 'r', 'LineWidth', 2);
xlabel('1/T');
ylabel('ln(N_D)');
title('ln(Electron Concentration) vs. 1/T for Silicon');
grid on;

Sign in to comment.

More Answers (0)

Categories

Find more on Polar Plots in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!