Matlab绘图无曲线显示求助:电子浓度与1/T关系图
问题原因及修正方案
核心错误点
- 未定义变量
Nv:代码计算电子浓度时用到了价带有效状态密度Nv,但常量部分仅定义了导带的Nc,Matlab会直接报错,无法生成有效数据。 - 单位不匹配导致数值异常:
k的单位是J/K,而Eg用的是eV,两者单位不统一,计算Eg./(2*k*T)时会得到极大的负数值,使得exp()结果趋近于0,ln(n)变成-Inf,绘图时全是无穷小值,自然看不到曲线。 - 电子浓度公式错误:你当前用的是本征载流子浓度
ni的计算公式,但n型半导体的电子浓度在多数温度区间(非本征区)应近似等于掺杂浓度Nd,仅高温本征激发占主导时才用ni的公式。 - 坐标轴标注错误:ylabel写的是
ln(N_D),但实际绘制的是ln(n),标注与数据不符。
修正后的代码
% Constants k = 1.38e-23; % Boltzmann's constant (J/K) eV_to_J = 1.602e-19; % Conversion factor from eV to J Eg = 1.12 * eV_to_J; % Energy band gap of silicon (J) Nc = 2.8e19; % Effective density of states in conduction band (cm^-3) Nv = 1.04e19; % Effective density of states in valence band (cm^-3) Nd = 1e16; % Doping concentration (cm^-3) % Temperature range T = linspace(100, 1000, 100); % Temperature range from 100 K to 1000 K % Calculate intrinsic carrier concentration ni = sqrt(Nc * Nv) * exp(-Eg./(2*k*T)); % Electron concentration for n-type doping: 区分非本征区和本征区 n = max(Nd, ni); % 低温非本征区n≈Nd,高温本征区n≈ni % 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 (K^{-1})'); ylabel('ln(n) (cm^{-3})'); title('ln(Electron Concentration) vs. 1/T for Silicon'); grid on;
修正说明
- 补充定义硅的价带有效状态密度
Nv(典型值为1.04e19 cm^-3),同时添加eV到J的转换,确保Eg与k单位统一。 - 修正n型半导体电子浓度的计算逻辑:用
max(Nd, ni)模拟实际物理过程——低温下掺杂完全电离,电子浓度等于掺杂浓度;高温下本征激发占主导,电子浓度趋近于本征载流子浓度。 - 修正ylabel标注,使其与绘制的数据匹配。
内容的提问来源于stack exchange,提问作者Homer Jay Simpson
相关产品推荐
相关产品推荐

