You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python绘制肖特基二极管J-V曲线时x/y维度不匹配问题求解

解决肖特基二极管J-V曲线绘图的维度不匹配问题

问题根源

触发ValueError的核心原因是函数返回值格式错误:
定义J(V)时,return J,末尾的逗号会将返回值包装成单元素元组,而非预期的numpy数组。当传入形状为(400,)的Vvals时,返回的是(array(shape(400,)),),实际维度为(1,400),和x轴数据维度不匹配,导致绘图失败。

修复步骤

  1. 修正函数返回值
    将J(V)函数中的return J,改为return J,直接返回numpy数组而非元组。
  2. 修复两处语法笔误
    • 第二张图初始化语句:ig, ax2 = plt.subplots() → fig, ax2 = plt.subplots()
    • 第二张图轴属性设置:x2.set(...) → ax2.set(...)
  3. 清理冗余逗号
    变量定义行末尾的,\n属于无效语法,可直接删除,避免不必要的警告。

修复后的完整代码

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import math

Eg=1.1         # eV  Bandgap of Silicon
er=11.9        # relative permitivity of Si
eo=8.854E-12   # F/m
Nc=2.8e19      # cm-3
Nv=1.16e19     # cm-2
k=8.617e-5     # eV/K  
kJ=1.38e-23    # J/K
e=1.602e-19
phiM=4.2       # eV
chiSi=4.01     # eV
Na=5e16        # cm-3

PhiBP=Eg-(phiM-chiSi)
PhiBN=phiM-chiSi
print ('barrier height = ', PhiBP, 'eV')

Nav=Na/Nv
L=np.log(Nav)
Evf=-L*k*300
Ecf=Eg-Evf

Vo=(PhiBN+Ecf)
print ('Vo=', Vo, 'V')

ee=er*eo
eNa=e*Na*1000000
eev=2*ee*Vo
w2=eev/eNa
print(w2)

W=math.sqrt(w2)
W2=W*1000000000
print ('W= ', W, 'm')
print ('W=', W2, 'nm')

Jo=30*(300**2)*np.exp(-0.8/(k*300)) # Units here are A cm-2
print ('Jo=', Jo, 'A/cm^2')

Vvals=np.arange(-2, 2, 0.01)
def J(V):    # This defines your function (equation) for calculating J vs V
    # *** WRITE YOUR FORMULA FOR J IN TERMS OF V HERE
    J=Jo*(np.exp(e*V/(k*300))-1)
    return J

fig, ax1 = plt.subplots()
ax1.semilogy(Vvals, J(Vvals), 'ro')
ax1.set(xlabel='Voltage (V)', ylabel='Current Density', title='Schottky diode J-V Semilog')

fig, ax2 = plt.subplots()      # Initializes second plot
ax2.plot(Vvals, J(Vvals), 'ro') # Creates linear plot
ax2.set(xlabel='Voltage (V)', ylabel='Current Density J', title='Schottky diode J-V Linear')

plt.show()

内容的提问来源于stack exchange,提问作者Alex Kratzer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 04:10:31