方波的基波和谐波详细推导,以及matlab验证[电路原理---2]

最近要滤波,从1KHZ 方波中获得正弦波,这让我们要对方波的频谱有具体的了解。虽然楼主一年前刚学过傅里叶。但也是忘的干干净净查阅资料后终于是整理出来。用漂亮的latex打出来了,为自己留存一份记录,也分享给大家学习。

方波的基波和谐波

复指数形式的傅里叶级数公式 - 对于周期为(T)的周期函数(f(t)),其复指数形式的傅里叶级数展开式为
f ( t ) = ∑ n = − ∞ ∞ F n e j n ω 0 t f(t)=\sum_{n = -\infty}^{\infty}F_{n}e^{jn\omega_{0}t} f(t)=n=−∞∑∞Fnejnω0t

其中
ω 0 = 2 π T \omega
{0}=\frac{2\pi}{T} ω0=T2π

系数
F n = 1 T ∫ − T / 2 T / 2 f ( t ) e − j n ω 0 t d t F
{n}=\frac{1}{T}\int_{-T/2}^{T/2}f(t)e^{-jn\omega_{0}t}dt Fn=T1∫−T/2T/2f(t)e−jnω0tdt

对于1kHz方波的分析 - 已知方波周期(T = 10^{-3}s),
ω 0 = 2 π × 1 0 3 r a d / s \omega_{0}=2\pi\times10^{3}rad/s\ ω0=2π×103rad/s

设方波函数(f(t))在一个周期内为

f ( t ) = { A , 0 ≤ t ≤ T 2 − A , T 2 < t ≤ T f(t)=\left\{\begin{matrix}A, &0\leq t\leq\frac{T}{2}\\ -A, &\frac{T}{2}\lt t\leq T\end{matrix}\right. f(t)={A,−A,0≤t≤2T2T<t≤T

  • 计算系数(F_{n}):
    F n = 1 T ∫ − T / 2 T / 2 f ( t ) e − j n ω 0 t d t = 1 T ( ∫ 0 T / 2 A e − j n ω 0 t d t + ∫ T / 2 T ( − A ) e − j n ω 0 t d t ) F_{n}=\frac{1}{T}\int_{-T/2}^{T/2}f(t)e^{-jn\omega_{0}t}dt=\frac{1}{T}\left(\int_{0}^{T/2}Ae^{-jn\omega_{0}t}dt+\int_{T/2}^{T}(-A)e^{-jn\omega_{0}t}dt\right) Fn=T1∫−T/2T/2f(t)e−jnω0tdt=T1(∫0T/2Ae−jnω0tdt+∫T/2T(−A)e−jnω0tdt)

    ∫ T / 2 T ( − A ) e − j n ω 0 t d t = A j n ω 0 ( e − j n 2 π − e − j n π ) \int_{T/2}^{T}(-A)e^{-jn\omega_{0}t}dt=\frac{A}{jn\omega_{0}}\left(e^{-jn2\pi}-e^{-jn\pi}\right) ∫T/2T(−A)e−jnω0tdt=jnω0A(e−jn2π−e−jnπ)

    F n = 1 T [ − A j n ω 0 ( e − j n π − 1 ) + A j n ω 0 ( e − j n 2 π − e − j n π ) ] F_{n}=\frac{1}{T}\left[-\frac{A}{jn\omega_{0}}\left(e^{-jn\pi}- 1\right)+\frac{A}{jn\omega_{0}}\left(e^{-jn2\pi}-e^{-jn\pi}\right)\right] Fn=T1[−jnω0A(e−jnπ−1)+jnω0A(e−jn2π−e−jnπ)]

  • 化简
    F n = A j n π ( 1 − e − j n π ) F_n= \frac{A}{jn \pi} (1-e^{-jn \pi}) Fn=jnπA(1−e−jnπ)

  • 讨论
    F o d d = A j n π ( 1 − ( − 1 ) n ) = A j n π ( 1 − ( − 1 ) o d d ) = 2 A j n π F_{odd}=\frac{A}{jn \pi}(1- (-1)^n)=\frac{A}{jn \pi}(1- (-1)^{odd})=\frac{2A}{jn \pi} Fodd=jnπA(1−(−1)n)=jnπA(1−(−1)odd)=jnπ2A

    F e v e n = A j n π ( 1 − ( − 1 ) n ) = A j n π ( 1 − ( − 1 ) e v e n ) = 0 F_{even}=\frac{A}{jn \pi}(1- (-1)^n)=\frac{A}{jn \pi}(1- (-1)^{even})=0 Feven=jnπA(1−(−1)n)=jnπA(1−(−1)even)=0

  1. 方波的复指数形式傅里叶级数展开式 - 所以(
    f ( t ) = ∑ n = − ∞ ∞ F n e j n ω 0 t = ∑ n = − ∞ , n o d d ∞ 2 A j n π e j n ω 0 t f(t)=\sum_{n = -\infty}^{\infty}F_{n}e^{jn\omega_{0}t}=\sum_{n = -\infty,n\ odd}^{\infty}\frac{2A}{jn\pi}e^{jn\omega_{0}t}\ f(t)=n=−∞∑∞Fnejnω0t=n=−∞,n odd∑∞jnπ2Aejnω0t
    基波频率
    ω 1 = ω 0 = 2 π × 1 0 3 r a d / s \omega_{1}=\omega_{0}=2\pi\times10^{3}rad/s ω1=ω0=2π×103rad/s
    对应的频率
    f 1 = 1 k H z ,谐波频率为 n ω 0 ( n = 3 , 5 , 7 , ⋯   ) f_{1}=1kHz,谐波频率为n\omega_{0}(n = 3,5,7,\cdots) f1=1kHz,谐波频率为nω0(n=3,5,7,⋯)
    在电子信息中,这种复指数形式的傅里叶级数方便分析信号的频谱等特性,,可以了解信号在不同频率成分上的分布情况。例如,幅度
    ∣ F n ∣ = 2 A ∣ n ∣ π ( n 为奇数 ) \vert F_{n}\vert=\frac{2A}{\vert n\vert\pi}(n为奇数) ∣Fn∣=∣n∣π2A(n为奇数)
    表示了各频率成分的强度。
matlab代码验证
matlab 复制代码
% 参数设置
Fs = 100e3;       % 采样频率 (100 kHz)
T = 1/Fs;         % 采样周期
t = 0:T:1-T;      % 时间向量 (1秒)
f1 = 1e3;         % 基波频率 (1 kHz)

% 生成 1 kHz 方波信号
square_wave = square(2*pi*f1*t);

% 计算 FFT
L = length(square_wave);  % 信号长度
Y = fft(square_wave);     % 计算 FFT
P2 = abs(Y/L);            % 双边频谱
P1 = P2(1:L/2+1);         % 单边频谱


% 频率向量
f = Fs*(0:(L/2))/L;       % 频率向量

% 绘制频谱图
figure;
plot(f, P1);
title('1 kHz 方波信号的频谱');
xlabel('频率 (Hz)');
ylabel('|P1(f)|');
grid on;

可以看出,0.63658强度的1KHZ基波和0.211强度的3次谐波都是如我们计算的这样

相关推荐
muub3 分钟前
【CubeMX-HAL库】STM32F407—无刷电机学习笔记
笔记·stm32·单片机·学习
cwtlw5 分钟前
mybatisPlus介绍
java·开发语言·spring boot·学习
爱吃水果蝙蝠汤6 分钟前
阿里云专有云网络架构学习
网络·学习·阿里云·华为·架构
灵魂画师向阳18 分钟前
Stable Diffusion实现模特换衣等功能
java·人工智能·学习·ai作画·stable diffusion
bylander29 分钟前
【AI学习】关于 DeepSeek-R1的几个流程图
人工智能·gpt·学习·流程图
Ase5gqe31 分钟前
关于maven的java面试题汇总
java·开发语言·maven
suuijbd1 小时前
单例模式和单例Bean
java·开发语言·单例模式
华梦岚2 小时前
Perl语言的语法糖
开发语言·后端·golang
厉君韵2 小时前
Scala语言的数据类型
开发语言·后端·golang