PDH鉴频信号_python代码

PHD原理与代码

PHD原理

PDH 技术中以腔的基模频率为参考,使用腔的反射信号来制备误差信号。具体地,考虑一个幅度为𝐸0,频率为𝜔 的入射光场,记为 E i n = E 0 e i ω t E_{\mathrm{in}}=E_{0}e^{i\omega t} Ein=E0et,该光场入射到腔中后,腔的反射信号写为 E r e f = E 1 e i ω t E_\mathrm{ref}=E_1e^{i\omega t} Eref=E1et,其中𝐸0 和𝐸1 都是复数且𝐸in 和𝐸ref 存在相位关系。反射场实际上包含两个分量,其中一个分量是从第一个腔镜直接反射回来的光场,并没有入射到腔内,该分量的相位存在 𝜋 的突变;另一个分量是在腔中多次反射后从第一个腔镜泄露出去的光场。定义腔的反射系数𝐹 (𝜔) 为反射场和入射场的比值,则 𝐹 (𝜔) 也为复数。对于无损对称腔可以直接给出反射系数为:
F ( ω ) = E r e f E i n = r ( exp ⁡ ( i ω f F S R ) − 1 ) 1 − r 2 exp ⁡ ( i ω f F S R ) F(\omega)=\frac{E_{\mathrm{ref}}}{E_{\mathrm{in}}}=\frac{r\left(\exp\left(i\frac{\omega}{f_{\mathrm{FSR}}}\right)-1\right)}{1-r^2\exp\left(i\frac{\omega}{f_{\mathrm{FSR}}}\right)} F(ω)=EinEref=1r2exp(ifFSRω)r(exp(ifFSRω)1)

其中 𝑟 为上文提到的腔镜的振幅反射系数,为方便起见令 𝑟1 = 𝑟2 = 𝑟。从上式也可以看出,当入射光场和 FP 腔完美共振时,𝐹 (𝜔) 的幅度为 0,代表没有信号反射(实际上是上述两个分量相干相消了);
当入射光场的频率远离共振频率时,𝐹 (𝜔) 的幅度为 1,代表全部反射。而𝐹 (𝜔) 的相位反映的则是激光频率相对于共振频率的高低,激光频率大于或者小于共振频率时,𝐹 (𝜔) 的相位项符号相反,如果能够提取出 𝐹 (𝜔) 的相位信息,则可以用它来反馈激光频率而将其锁在共振频率上。

PDH 技术采用对入射光场进行调制的方法来获取有关相位信息。考虑对入射光场进行相位调制,实验上可以使用相位型电光调制器(EOM)对激光进行相位调制,此时入射光场变为:
E in ( t ) = E 0 e i ( ω t + β sin ⁡ Ω t ) E_\text{in}(t)=E_0e^{i(\omega t+\beta\sin\Omega t)} Ein(t)=E0ei(ωt+βsinΩt)

其中 𝛽 为调制深度,Ω 为调制(角)频率。利用贝塞尔级数将上式展开,得到

E i n ( t ) = E 0 e i ( ω t + β sin ⁡ ( Ω t ) ) ≈ E 0 ( J 0 ( β ) + 2 i J 1 ( β ) sin ⁡ ( Ω t ) ) e i ω t = E 0 [ J 0 ( β ) e i ω t + J 1 ( β ) e i ( ω + Ω ) t − J 1 ( β ) e i ( ω − Ω ) t ] , \begin{aligned} E_{\mathrm{in}}(t)& =E_{0}e^{i(\omega t+\beta\sin{(\Omega t)})} \\ &\approx E_0\left(J_0(\beta)+2iJ_1(\beta)\sin{(\Omega t)}\right)e^{i\omega t} \\ &=E_{0}\left[J_{0}(\beta)e^{i\omega t}+J_{1}(\beta)e^{i(\omega+\Omega)t}-J_{1}(\beta)e^{i(\omega-\Omega)t}\right], \end{aligned} Ein(t)=E0ei(ωt+βsin(Ωt))E0(J0(β)+2iJ1(β)sin(Ωt))et=E0[J0(β)et+J1(β)ei(ω+Ω)tJ1(β)ei(ωΩ)t],

可见经过调制后,入射光场包含三个频率分量,分别是频率为 𝜔 的载波分量以及频率为𝜔 ± Ω 的边带分量。需要注意两个边带分量的相位并不相同,差距为𝜋,这对于后面获得鉴频信号极为重要。上述三个频率分量均会被 FP 腔反射,于是反射电场可写为:

E r e f ′ ( t ) = E i n ′ ( t ) F ( ω ) = E 0 [ F ( ω ) J 0 ( β ) e i ω t + F ( ω + Ω ) J 1 ( β ) e i ( ω + Ω ) t ] − F ( ω − Ω ) J 1 ( β ) e i ( ω − Ω ) t ] . \begin{aligned} E_{\mathrm{ref}}^{\prime}(t)& =E_{\mathrm{in}}^{\prime}\left(t\right)F\left(\omega\right) \\ &=E_{0}\left[F\left(\omega\right)J_{0}(\beta)e^{i\omega t}+F\left(\omega+\Omega\right)J_{1}(\beta)e^{i(\omega+\Omega)t}\right] \\ &-F\left(\omega-\Omega\right)J_{1}(\beta)e^{i(\omega-\Omega)t}\Big] . \end{aligned} Eref(t)=Ein(t)F(ω)=E0[F(ω)J0(β)et+F(ω+Ω)J1(β)ei(ω+Ω)t]F(ωΩ)J1(β)ei(ωΩ)t].

实验上我们一般用光电探测器接受此反射电场信号将其转化为电信号处理,这里写出反射电场对应的功率 𝑃ref 为:

P r e f ( t ) = P c [ F ( ω ) ] 2 + P s { ∣ F ( ω + Ω ) ∣ 2 + ∣ F ( ω − Ω ) ∣ 2 } + 2 P c P s { R e [ G ( ω , Ω ) ] cos ⁡ Ω t + I m [ G ( ω , Ω ) ] sin ⁡ Ω t } + O ( 2 Ω ) \begin{aligned}&P_{\mathrm{ref}}(t)=P_c[F(\omega)]^2+P_s\{\left|F(\omega+\Omega)\right|^2+\left|F(\omega-\Omega)\right|^2\}\\ &\qquad\qquad+2\sqrt{P_cP_s}\{\mathrm{Re}[G(\omega,\Omega)]\cos\Omega t+\mathrm{Im}[G(\omega,\Omega)]\sin\Omega t\}\\ &\qquad\qquad+O(2\Omega) \end{aligned} Pref(t)=Pc[F(ω)]2+Ps{F(ω+Ω)2+F(ωΩ)2}+2PcPs {Re[G(ω,Ω)]cosΩt+Im[G(ω,Ω)]sinΩt}+O()

其中
G ( ω , Ω ) = F ( ω ) F ∗ ( ω + Ω ) − F ∗ ( ω ) F ( ω − Ω ) G(\omega,\Omega)=F(\omega)F^{*}(\omega+\Omega)-F^{*}(\omega)F(\omega-\Omega) G(ω,Ω)=F(ω)F(ω+Ω)F(ω)F(ωΩ)

按照顺序,上式前两个Pc,Ps项不含时间,是直流项,可以通过低通滤波器滤除;最后的振幅为Ps的项频率为2Ω,但是振幅相比较中间的 P c P s {\sqrt{P_{c}P_{s}}} PcPs 而言很小,可以忽略。中间的振幅为 P c P s {\sqrt{P_{c}P_{s}}} PcPs 的项是重点,其振荡频率为Ω,既包含正弦振荡的也包含余弦振荡的,其振幅是G(ω,Ω)的实部或者虚部,它称为误差信号。称之为“信号”是相对于激光器频率ω而言的,即给定电光调制的信号源频率Ω后,对于每个激光器频率ω,误差信号G(ω,Ω)都给出不同的值,反映出对当前频率ω的“鉴定”信息。
于是先描述如何通过G(ω,Ω)的实部或虚部来实现稳频(即误差信号的形状如何),再描述G(ω,Ω)的实部或虚部如何作为电压信号提取出来。

PHD鉴频信号幅度和频率的关系图代码

大调制指调制频率远大于腔线宽的情况,即Ω≫𝛥𝑣,此时边带频率距离共振频率较远,被完全反射,于是𝐹(𝜔±Ω)≈−1,进一步可知 F ( ω ) F ∗ ( ω + Ω ) − F ∗ ( ω ) F ( ω − Ω ) = − 2 i I m [ F ( ω ) ] F(\omega)F^*(\omega+\Omega)-F^*(\omega)F(\omega-\Omega)=-2i\mathrm{Im}\left[F(\omega)\right] F(ω)F(ω+Ω)F(ω)F(ωΩ)=2iIm[F(ω)]是纯虚数。一阶震荡项中只有余弦项存在,与解调信号𝐸d(𝑡)=𝐴𝑒𝑖Ω𝑡+𝜑混频并低通滤波后,得到鉴频信号𝜖(𝜔)为:

ϵ ( ω ) = − 2 P c P sb I m { F ( ω ) F ∗ ( ω + Ω ) − F ∗ ( ω ) F ( ω − Ω ) } . \epsilon(\omega)=-2\sqrt{P_\text{c}P_\text{sb}}\mathrm{Im}\left\{F(\omega)F^*(\omega+\Omega)-F^*(\omega)F(\omega-\Omega)\right\}. ϵ(ω)=2PcPsb Im{F(ω)F(ω+Ω)F(ω)F(ωΩ)}.

大调制情况下的鉴频信号幅度和频率的关系图代码

import numpy as np
import matplotlib.pyplot as plt


# 定义腔体的反射系数函数
def F(omega, omega_c, FSR, R):
    # 计算F(omega)的反射系数,omega_c是共振频率
    delta_omega = (omega - omega_c) / FSR
    return (R - np.exp(-2j * np.pi * delta_omega)) / (1 - R * np.exp(-2j * np.pi * delta_omega))


# 定义误差信号G(omega, Omega)的虚部
def G_imag(omega, omega_c, FSR, R, Omega):
    F_omega = F(omega, omega_c, FSR, R)
    F_omega_plus_Omega = F(omega + Omega, omega_c, FSR, R)
    F_omega_minus_Omega = F(omega - Omega, omega_c, FSR, R)

    # 计算G(omega, Omega)的虚部
    return -2 * np.imag(F_omega * np.conjugate(F_omega_plus_Omega) - np.conjugate(F_omega) * F_omega_minus_Omega)


# 参数设置
R = 0.994  # 反射率
FSR = 1  # 自由光谱范围(归一化)
omega_c = 0  # 共振频率(归一化)
Omega = 0.04 * FSR  # 调制频率(相对自由光谱范围的比例)
omega_range = np.linspace(-0.1, 0.1, 1000)  # 频率偏移量

# 计算误差信号
error_signal = G_imag(omega_range, omega_c, FSR, R, Omega)

# 绘制误差信号曲线
plt.figure(figsize=(8, 6))
plt.plot(omega_range, error_signal, label=r'Imaginary part of $G(\omega, \Omega)$')
plt.axhline(0, color='black', linestyle='--', linewidth=0.5)
plt.axvline(0, color='black', linestyle='--', linewidth=0.5)
plt.title(r'PDH Error Signal $G(\omega, \Omega)$ (Large Modulation)')
plt.xlabel(r'Frequency Offset $\omega$ (normalized)')
plt.ylabel('Error Signal (arb. units)')
plt.legend()
plt.grid(True)
plt.show()

结果
请添加图片描述

  • 12
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个错误是因为第四个参数应该是一个指向 PDH_FMT_COUNTERVALUE 结构体的指针,但您传递了一个 DWORD 类型的指针。您需要修改代码,将第四个参数改为一个指向 PDH_FMT_COUNTERVALUE 结构体的指针,同时修改第五个参数为 PDH_FMT_LARGE,以获取大整数格式的计数器值。 修改后的代码如下: ```C++ #include <iostream> #include <pdh.h> #pragma comment(lib, "pdh.lib") int main() { PDH_STATUS status; HQUERY hQuery; HCOUNTER hCounter; PDH_FMT_COUNTERVALUE counterValue; // 打开查询 status = PdhOpenQuery(NULL, 0, &hQuery); if (status != ERROR_SUCCESS) { std::cout << "打开查询失败:" << status << std::endl; return 1; } // 添加计数器 status = PdhAddCounter(hQuery, L"\\PhysicalDisk(_Total)\\Disk Read Bytes/sec", 0, &hCounter); if (status != ERROR_SUCCESS) { std::cout << "添加计数器失败:" << status << std::endl; PdhCloseQuery(hQuery); return 1; } // 查询计数器值 status = PdhCollectQueryData(hQuery); if (status != ERROR_SUCCESS) { std::cout << "查询计数器值失败:" << status << std::endl; PdhCloseQuery(hQuery); return 1; } // 获取计数器值 status = PdhGetFormattedCounterValue(hCounter, PDH_FMT_LARGE, NULL, &counterValue); if (status != ERROR_SUCCESS) { std::cout << "获取计数器值失败:" << status << std::endl; PdhCloseQuery(hQuery); return 1; } // 输出计数器值 std::cout << "磁盘读速度:" << counterValue.largeValue << " 字节/秒" << std::endl; // 关闭查询 PdhCloseQuery(hQuery); return 0; } ``` 这里使用 PDH_FMT_LARGE 格式获取计数器值,可以获取到大整数格式的计数器值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值