[ MATLAB ] 傅里叶变换(二):傅里叶级数(复指数表示)

本文回顾了傅里叶级数的复指数表示理论,通过Matlab仿真展示了如何用复指数表示周期信号,解释了负频率和复数在该表示中的作用,并通过增加谐波项数验证了复指数表示的准确性。后续将探讨傅里叶变换在非周期信号的应用。
摘要由CSDN通过智能技术生成

前言

在上一篇文章中,我们已经了解了傅里叶级数的正余弦表示,详情可以参考[ MATLAB ] 傅里叶变换(一):傅里叶级数(正余弦表示)
周期信号 x ( t ) x(t) x(t),可以由正余弦函数线性表示。根据定义,需要计算直流分量 a 0 a_0 a0,各谐波幅度 a n a_n an以及 b n b_n bn。显然,这需要三个表达式。然而,我们比较懒,希望只用一个表达式,就可以表示出 a 0 , a n , b n a_0,a_n,b_n a0,an,bn的含义。因此,我们需要引入FS的复指数表示

理论回顾

这里我们不再赘述正余弦 → \to 复指数的推导过程,核心依据是欧拉公式 e j θ = cos ⁡ θ + sin ⁡ θ {e^{j\theta }} = \cos \theta + \sin \theta ejθ=cosθ+sinθ,详细过程铁子们可以去查阅参考书或者其他博文。直接给出结论:若 x ( t ) x(t) x(t)是周期性连续时间信号,设 x ( t ) x(t) x(t)周期为 T T T,模拟角频率 Ω 0 = 2 π T \Omega_0 = \frac{{2\pi }}{T} Ω0=T2π,模拟频率 F 0 = 1 T = Ω 0 2 π F_0 = \frac{1}{T} = \frac{\Omega_0}{{2\pi }} F0=T1=2πΩ0,则 x ( t ) x(t) x(t)可以由复指数求和表示:
反变换: x ( t ) = ∑ k = − ∞ ∞ X ( j k Ω 0 ) e j k Ω 0 t 反变换: x\left( t \right) = \sum\limits_{k = - \infty }^\infty {X\left( {jk{\Omega _0}} \right){e^{jk{\Omega _0}t}}} 反变换:x(t)=k=X(jkΩ0)ejkΩ0t
相应地,正变换为:
正变换: X ( j k Ω 0 ) = 1 T ∫ 0 T x ( t ) e − j k Ω 0 t d t 正变换:X\left( {jk{\Omega _0}} \right) = \frac{1}{T}\int\limits_0^T {x\left( t \right){e^{ - jk{\Omega _0}t}}dt} 正变换:X(jkΩ0)=T10Tx(t)ejkΩ0tdt
观察反变换(Eq1),铁子们自然会产生两个问题:(1) 为什么会出现负频率?(2) 为什么会出现复数? 产生这两个问题的原因自然是,在实际生活中,不存在负频率和复数。对此,将在下一小节,通过Matlab仿真对理论进行梳理解答。

仿真验证

  • 步骤1:实现连续周期信号 x ( t ) x(t) x(t)

[ MATLAB ] 傅里叶变换(一):傅里叶级数(正余弦表示)中类似,我们对周期时间 x ( t ) x(t) x(t)的相关要求进行松弛:(1) 周期信号:定义域无穷 → \to 定义域包含整数个周期;(2) 连续信号:连续时间变量 → \to 符号变量。

syms t;  % 连续时间变量
T = 2;  % 周期
periodic_signal = rectangularPulse(t)+rectangularPulse(t-T)+rectangularPulse(t-2*T);  % 周期信号
ezplot(periodic_signal,[-0.5, -0.5+3*T]);  % 绘制周期信号
  • 步骤2:复指数定义近似

首先,通过正变换计算得出 X ( j k Ω 0 ) X\left( {jk{\Omega _0}} \right) X(jkΩ0);然后,得出 X ( j k Ω 0 ) X\left( {jk{\Omega _0}} \right) X(jkΩ0)的幅值+相位;接着,计算各谐波(余弦函数), X X X的相位为谐波相位, X X X的幅值乘2是谐波的振幅;最后,各谐波分量相加得出近似信号。

n = [8 32];  % 谐波次数
signal_approximates = sym('c',[1,length(n)]);  % 不同谐波次数的近似信号
idx = 1;
for n_temp=n
    components = sym('c',[1,n_temp+1]);  % 分量矩阵
    for ii=0:n_temp
        X_n = 1/T*int(periodic_signal*exp(-1i*ii*2*pi/T*t),0,T);  % 正变换
        X_n_abs = abs(X_n);  % 幅值(经过搬移)
        X_n_angle = angle(X_n);  % 相位
        if ii==0
            components(ii+1) = X_n_abs*cos(ii*2*pi/T*t+X_n_angle);  % 直流分量(未经历搬移)
        else
            components(ii+1) = 2*X_n_abs*cos(ii*2*pi/T*t+X_n_angle);  % 各次谐波(经历搬移,所以线性组合时需要加倍)
        end
    end
    signal_approximates(idx) = sum(sum(components));  % 线性组合,近似原信号x(t)
    idx = idx+1;
end

步骤3:绘制信号图像,验证近似结果

subplot(3,1,1);ezplot(periodic_signal,[-0.5, -0.5+3*T]);
title('(a)原周期信号x(t)');
subplot(3,1,2);ezplot(signal_approximates(1),[-0.5, -0.5+3*T]);
hold on
subplot(3,1,2);ezplot(periodic_signal,[-0.5, -0.5+3*T]);
title('(b)复指数近似,项数等于8');legend("周期信号x(t)","复指数近似")
subplot(3,1,3);ezplot(signal_approximates(2),[-0.5, -0.5+3*T]);
hold on
subplot(3,1,3);ezplot(periodic_signal,[-0.5, -0.5+3*T]);
title('(c)复指数近似,项数等于32');legend("周期信号x(t)","复指数近似")

在这里插入图片描述

显然,随着谐波项数的增加,近似信号愈发逼近原始信号,验证成功。

仿真总结

  1. 复数的意义?余弦函数两大特征(幅值+相位),一个复数即可包含这两个要素,最终能够用一个表达式统一正余弦定义中的三个式子,更加精炼简洁。
  2. 为什么会出现负频率和复数?数学运算的结果,没有实际物理意义。
  3. 复频谱经历了频谱搬移,即 X ( j k Ω 0 ) X\left( {jk{\Omega _0}} \right) X(jkΩ0)幅值乘以2,才是余弦信号的幅值。
  4. 到此,我们已经详细分析了FS的两种形式(正余弦,复指数),但是其变换对象全部都是周期信号。然而,在实际生活中,非周期信号更为常见。对此,傅里叶变换(FT) 的引入成为必然,这将在下一篇文章中进行介绍。

创作不易,希望铁子们可以给出宝贵的建议,这将是我这个小菜猫不断前进的动力,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值