3. Clark变换的逆变换实现

任务目标

本案例实现逆Clark变换,将静止两相坐标系下的电流分量 iα、iβ 反变换回三相静止坐标系电流 ia、ib、ic,并通过正逆变换串联验证变换的可逆性。

逆Clark变换原理

等幅值约束下的Clark正变换为:

iα = ia − (1/2)·ib − (1/2)·ic
iβ = (√3/2)·(ib − ic)

对应逆变换(保持等幅值约束,零序分量忽略)为:

ia = iα
ib = −(1/2)·iα + (√3/2)·iβ
ic = −(1/2)·iα − (√3/2)·iβ

由于正变换矩阵并非方阵(2×3),逆变换采用Moore-Penrose伪逆,在忽略零序分量的前提下满足 ia+ib+ic=0 的约束条件,实现精确重构。

Python实现

```python import numpy as np def clark_forward(ia, ib, ic): """等幅值Clark正变换: 三相 -> 两相静止""" i_alpha = ia - 0.5 * ib - 0.5 * ic i_beta = (np.sqrt(3) / 2.0) * (ib - ic) return i_alpha, i_beta def clark_inverse(i_alpha, i_beta): """逆Clark变换: 两相静止 -> 三相""" ia = i_alpha ib = -0.5 * i_alpha + (np.sqrt(3) / 2.0) * i_beta ic = -0.5 * i_alpha - (np.sqrt(3) / 2.0) * i_beta return ia, ib, ic # 验证: 构造一组三相平衡电流(幅值1A, 相位120°互差) theta = np.deg2rad(30) # 任意初始相位 ia_in = np.cos(theta) ib_in = np.cos(theta - 2 * np.pi / 3) ic_in = np.cos(theta + 2 * np.pi / 3) # 正变换 i_alpha, i_beta = clark_forward(ia_in, ib_in, ic_in) # 逆变换重构 ia_out, ib_out, ic_out = clark_inverse(i_alpha, i_beta) # 打印结果 print("原始三相电流:") print(f" ia = {ia_in:.6f}, ib = {ib_in:.6f}, ic = {ic_in:.6f}") print("逆变换重构结果:") print(f" ia = {ia_out:.6f}, ib = {ib_out:.6f}, ic = {ic_out:.6f}") # 误差计算 err_a = abs(ia_out - ia_in) err_b = abs(ib_out - ib_in) err_c = abs(ic_out - ic_in) max_err = max(err_a, err_b, err_c) print(f"\n最大误差: {max_err:.2e}") # 判定: 误差小于1e-10则通过 if max_err < 1e-10: print("验证通过: 逆Clark变换正确重构三相电流") else: print("验证失败: 误差超限") ```

运行与验证

运行方式:需要NumPy库,执行 pip install numpy 安装依赖后直接运行脚本。

验证逻辑:构造一组幅值为1A、相位互差120°的三相平衡电流,经正变换得到 iα、iβ,再经逆变换重构三相电流。比较重构值与原始值的最大误差。

通过条件:最大误差小于 1×10⁻¹⁰(浮点精度范围内),即证明正逆变换串联后能精确恢复原始三相电流,变换可逆。

预期输出

由于输入为确定的三相平衡电流,代码逻辑直接推出以下结果:


原始三相电流:
  ia = 0.866025, ib = -0.866025, ic = 0.000000
逆变换重构结果:
  ia = 0.866025, ib = -0.866025, ic = 0.000000

最大误差: 0.00e+00
验证通过: 逆Clark变换正确重构三相电流

关键说明

  • 本实现采用等幅值约束,逆变换矩阵为对应伪逆,适用于三相无中线系统(ia+ib+ic=0)。
  • 若需处理零序分量,需额外引入 i0 通道,本案例不涉及。
  • 实际工程中(如FOC电流环),逆Clark变换输出通常直接作为SVPWM的输入,本案例代码可直接嵌入该流程。