目录
概述
1 收敛性
1.1 收敛定理
1.2 理解收敛定理
2 傅里叶级数的应用
2.1 问题描述
2.2 实现方法
3 方波函数的傅里叶验证(C语言实现)
3.1 方波函数
3.1.1 编写方波函数
3.1.2 程序函数验证
3.2 傅里叶级数函数实现
3.2.1 编写傅里叶级数函数
3.2.2 功能验证
4 傅里叶级数验证
4.1 原始函数
4.2 傅里叶级数参数设置
概述
本文主要介绍傅里叶级数的特征,笔者基于方波信号,设计和验证傅里叶级数实现方式。通过改变级数参数,观察波形的变化特点。
1 收敛性
存在一个函数: f(x),其可以被展开为傅里叶级数的条件如下:
1) x的区间(-∞, +∞)
2) 该函数是一个周期函数,其周期为2π
3) 该函数在一个周期内(2π)是可以积分的
1.1 收敛定理
存在一个函数f(x),该函数是一个周期函数,其周期为2π。f(x)的傅里叶级数满足收敛性的条件如下:
1)在一个周期内连续的函数
2)如果有间断点,但必须满足只有有限个第一类间断点
3)在一个周期内,只有有限个极值点
收敛点的位置:
1) 当x是f(x)的连续点时,f(x)的傅里叶级数收敛于f(x)
2) 当x是间断点时,f(x)的傅里叶级数收敛于
1.2 理解收敛定理
函数f(x)满足如下条件:
1) x的值域范围:[ -π, +π]
2)f(x) 至多有有限个间断点,且不会做无限次震动
连续函数:该函数的傅里叶级数就收敛于该点的函数值
间断函数:在间断点处收敛于该点的左极限和右极限的算数平均值
在集合x ∈C上,f(x)的傅里叶级数展开式如下:
2 傅里叶级数的应用
2.1 问题描述
设f(x) 是周期为2π的周期函数,他在[ -π, +π]上的表达式为:
将f(x) 展开为傅里叶级数。
2.2 实现方法
1)收敛性判断
f(x) 满足如下条件:
1)f(x)在x = kπ(k=0,±1,,±2,±3,.... )的位置为断点
2)f(x) 在其他点的位置 是连续点
2)收敛点计算
根据收敛定理可得,
x = kπ时,该级数收敛于:
x ≠ 0 时,该级数收敛于 f(x)
3)实现傅里叶级数
根据傅里叶级数公式:
和 表示如下:
其中 :
计算步骤如下:
step-1:计算
step-2:计算
4)傅里叶级数实现
其中f(x)
将 ,带入 f(x)中,可得如下公式:
其中x属于如何集合:
3 方波函数的傅里叶验证(C语言实现)
3.1 方波函数
3.1.1 编写方波函数
详细代码如下:
void Debug_Squarewave( void )
{
double t = 0;
double val0;
int k = 0, state = 0;
while(1)
{
switch( state )
{
default:
case 0:
if( t >= k*M_PI && t < (k+1)*M_PI)
{
val0 = 1;
}
else
{
state = 1;
k+=1;
}
break;
case 1:
if( t > (k)*M_PI && t <= (k+1)*M_PI)
{
val0 = -1;
}
else
{
k+=1;
state = 0;
}
break;
}
t += 0.01;
printf( "%.4f \r\n", val0);
}
}
3.1.2 程序函数验证
编译代码并运行,得到如下波形:
3.2 傅里叶级数函数实现
3.2.1 编写傅里叶级数函数
其详细代码如下:
double Debug_Debug_SquarewaveFF( int max, double t)
{
double value=0,tempVal,para;
int k = 1;
do{
para = (2*k-1)*0.1;
tempVal = (0.1/(para)) *sin((2*k-1) * t);
value += tempVal;
k++;
}while( k < max );
return FF_PARA*value;
}
3.2.2 功能验证
编写验证函数:
void Debug_Squarewave( void )
{
double t = 0, waveFF;
double val0;
int k = 0, state = 0;
while(1)
{
switch( state )
{
default:
case 0:
if( t >= k*M_PI && t < (k+1)*M_PI)
{
val0 = 1;
}
else
{
state = 1;
k+=1;
}
break;
case 1:
if( t > (k)*M_PI && t <= (k+1)*M_PI)
{
val0 = -1;
}
else
{
k+=1;
state = 0;
}
break;
}
waveFF = Debug_Debug_SquarewaveFF(100,t);
t += 0.01;
printf( "%.4f, %.4f \r\n", val0, waveFF);
}
}
4 傅里叶级数验证
4.1 原始函数
波形信号如下:
4.2 傅里叶级数参数设置
设置K = 100
其运行波形如下:
观察细节:
K = 100时的波形:
波峰位置的细节
K = 10时的波形: