Filter löschen
Filter löschen

Line in Matlab plot do not appear

7 Ansichten (letzte 30 Tage)
Nikolaos
Nikolaos am 4 Mai 2024
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 ?

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 4 Mai 2024
Verschoben: Walter Roberson am 4 Mai 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 Kommentar
Walter Roberson
Walter Roberson am 4 Mai 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;

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Polar Plots finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by