使用sympy实现傅里叶变换
from sympy import fourier_transform, inverse_fourier_transform
from sympy.abc import t, omega
from sympy import exp, plot, Piecewise
# 定义原始信号(示例使用矩形函数)
f = Piecewise((0, t < -1), (0, t > 1), (1, True))
# 计算傅里叶变换
F = fourier_transform(f, t, omega)
print("原始信号:")
plot(f, (t, -2, 2), title='Original Signal')
print("\n傅里叶变换结果:")
print(F)
原始信号:
傅里叶变换结果:
Piecewise((sin(2piomega)/(pi*omega), ((omega > -oo) | (omega > 0)) & ((omega > -oo) | (omega < oo)) & ((omega > 0) | (omega < 0)) & ((omega < 0) | (omega < oo))), (2, omega >= 0))
原函数:
{
0
for
t
>
1
∨
t
<
−
1
1
otherwise
\displaystyle \begin{cases} 0 & \text{for}\: t > 1 \vee t < -1 \\1 & \text{otherwise} \end{cases}
{01fort>1∨t<−1otherwise
变换后函数:
{
sin
(
2
π
ω
)
π
ω
for
(
ω
>
−
∞
∨
ω
>
0
)
∧
(
ω
>
−
∞
∨
ω
<
∞
)
∧
(
ω
>
0
∨
ω
<
0
)
∧
(
ω
<
0
∨
ω
<
∞
)
2
for
ω
≥
0
\displaystyle \begin{cases} \frac{\sin{\left(2 \pi \omega \right)}}{\pi \omega} & \text{for}\: \left(\omega > -\infty \vee \omega > 0\right) \wedge \left(\omega > -\infty \vee \omega < \infty\right) \wedge \left(\omega > 0 \vee \omega < 0\right) \wedge \left(\omega < 0 \vee \omega < \infty\right) \\2 & \text{for}\: \omega \geq 0 \end{cases}
{πωsin(2πω)2for(ω>−∞∨ω>0)∧(ω>−∞∨ω<∞)∧(ω>0∨ω<0)∧(ω<0∨ω<∞)forω≥0