方波分解为多次正弦波之和的设计百度

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录

1 技术要求 (1)

1.1 设计目的 (1)

1.2 初始条件 (1)

1.3 设计要求 (1)

2 基本原理 (1)

2.1 连续时间周期信号用三角函数展开的原理 (1)

2.1.1 信号分解与正交函数集 (1)

2.1.2 三角函数的正交性 (3)

2.1.3 连续时间周期信号分解为三角函数之和 (3)

2.2 方波分解为多次正弦波之和的原理 (4)

3 建立模型描述 (5)

3.1正弦波合成并与原始方波进行比较模型的建立 (5)

3.2 其他模型的建立 (5)

4 源程序代码 (6)

4.1 正弦波合成并与原始方波比较的源程序代码及运行结果 (6)

4.1.1 正弦波合成并与原始方波比较的源程序代码 (6)

4.1.2 程序运行结果 (7)

4.2 正弦波合成趋势图源程序代码及运行结果 (9)

4.2.1 正弦波合成趋势图源程序代码 (9)

4.2.2 程序运行结果 (11)

4.3 方波单边频谱图源程序代码及运行结果 (11)

4.3.1 方波单边频谱图源程序代码 (11)

4.3.2 程序运行结果 (12)

4.4 方波与其分解后的各次谐波的比较图源程序代码及运行结果 (13)

4.4.1 方波与其分解后的各次谐波的比较图源程序代码 (13)

4.4.2 程序运行结果 (14)

5 调试过程及结论 (15)

5.1 调试过程叙述 (15)

5.1.1 正弦波合成并与原始方波比较的源程序调试过程 (15)

5.1.2 方波单边频谱图源程序调试过程 (15)

5.1.3 方波与其分解后的各次谐波的比较图源程序调试过程 (15)

5.1.4 正弦波合成趋势图源程序调试过程 (15)

5.2 结论 (16)

6 心得体会 (17)

7 参考文献 (17)

8 附录 (18)

方波分解为多次正弦波之和的设计

1 技术要求

1.1 设计目的

使用MATLAB 仿真软件将方波信号分解为多次正弦波之和。

1.2 初始条件

MATLAB 软件,计算机。

1.3 设计要求

已知某一周期性方波(自行设计相关参数),用MATLAB 仿真软件演示谐波合成情况,讨论相关参数对分解和合成波形的影响。

2 基本原理

2.1 连续时间周期信号用三角函数展开的原理

2.1.1 信号分解与正交函数集

信号通常以时间函数表示,所以信号的分量及其分解指的就是函数的分量及其分解。可利用与矢量分解相类比的方法来来研究如何将一信号分解为其分量。

与矢量用另一矢量上的分量表示原矢量类似。在一定的时间区间()12,t t 内,若用函数2()f t 中的122()c f t 来近似的表示原函数1()f t ,将存在一误差函数()t ε?,且有:

1122()()t f c f t ε?=- (1)

在矢量近似中最佳系数选择的依据,是使得误差矢量的长度的平方最小;而12c 的选择,则是要求使误差函数的方均值最小。误差函数的方均值为:

222121

()1)()t t t t t dt t ε??=-? (2) 此值最小时有:

2221212211

()()()t t c f t f t dt f t dt t t =?? (3) 系数12c 是在最小方均误差的意义上代表二函数1()f t 、2()f t 的相关联的程度的度量。当120c =时,由式(3)可知,此时有:

2121()()0t f t f t dt t =? (4)

如果满足这一条件,则称1()f t 与2()f t 在区间12(,)t t 内正交。此时1()f t 与2()f t 就构成一个正交函数集。1()f t 与2()f t 两函数正交时,1()f t 在2()f t 中的分量122()c f t 为零。

一个函数可以在另一个函数中具有分量,则和矢量的情况类似,可以将一代表信号的函数表示为该函数在一正交函数集中的分量的加权和。在区间12(,)t t 内互相正交的n 个函数123()()()()n g t g t g t g t 、、、...、组成一个n 维的正交信号空间。此函数集中的函数之间,在区间12(,)t t 内具有如下关系:

212()t

m m t g t dt k =? (5) 21()()0t l m t g t g t dt l m =≠? (6)

其中m k 为一常数。若1m k =,则上述函数集就称为是归一化正交的。任意一个代表信号的的函数()f t ,在区间12(,)t t 内,可以用组成信号空间的n 个正交函数的线性组合来近似的表示为:

1122()()()...()...()r r n n f t c g t c g t c g t c g t ≈++++ (7)

若要使近似值的方均误差最小,则()f t 在函数()r g t 中的分量系数为:

2222111

()()()1()()r r r r r t t t c f t g t dt g t dt k f t g t dt t t t ==??? (8) 若用一正交函数集中的分量和各次谐波分量之和,那么该矢量集必须是一完备的正交矢量集。与此相似,用一正交函数集中的分量去代表任意一个函数,该函数集也必须是一完备的正交函数集。完备的正交函数集往往都是由无穷多的函数组成。任意一信号表示为正交函数集中的分量之和时,所取分量函数的项数越多精确度越高,即方均误差最小。当所取项数无限增大时,方均误差趋于零,这是的正交函数集也成为完备的。对于一个在区间12(,)t t 内的完备正交函数集中的所有函数,不可能找到另外一个异于零的函数能在同一区间内和它们相正交。反之,若存在正交函数集以外的函数,与正交函数集中的所有函数正交,则该正交函数集必不是完备的。

信号在正交函数集中的分解是多样。在矢量分解中,坐标轴经过变换,可以有不同的选取方法;同样,表示信号的正交函数集也可以经过变换而有不同选取方法。如同坐标变换不影响矢量本身一样,正交函数集的变换也不影响所表示的函数本身。故可以用一个正交函数集变换到另一个正交函数集去表示一个函数。在各种正交函数集中,傅里叶级数是既方便又很有用的。除傅里叶级数外,其他如沃尔什函数、勒让德函数、切比雪夫函数等。

它们都是正交函数集。

2.1.2 三角函数的正交性

正弦函数与余弦函数满足如下关系:

11cos sin 0,t T m t n tdt m n t ωω+?=?为任意整数 (9)

1111cos cos sin sin 0t T t T m t n tdt m t n tdt m n t t ωωωω++?=?=≠?? (10)

221111

cos sin 2t T t T n tdt n tdt T t t ωω++==?? (11) 这表示上述各余弦函数与正弦函数,在区间11(,)t t T +内,均相互正交。即{1、cos t ω、

cos 2t ω、cos3t ω、···、cos n t ω、···s i n t ω、sin 2t ω、sin 3t ω、···、sin n t ω、···}(其中2T πω=为上述三角函数的公共周期)构成一组完备的正交函数集。故任意一个周期信号都可以展开成为正弦函数及余弦函数的无穷级数。

2.1.3 连续时间周期信号分解为三角函数之和

由前一部分可知,对于任意一个周期为T 的周期信号()f t ,都可以求出它在上述三角

函数集中各函数中的分量,从而可将()f t 在区间11t t T +(,)内表示为上述三角函数集中各

函数的加权和。即:

()01()2cos sin n f t a a n t b n t n n ωω∞∑

==++ (12) 其中02a 实际就是()f t 在区间内的平均值,意即直流分量。设定其为02a 是为了使得后面出计算0a 的公式与其他下标不等于零的n a 一致。由公式(8)、(9)、(10)、(11)可知,各正弦函数余弦函数的分量系数为:

111111

2()cos cos 2()cos n t T t T t T a f t n tdt n tdt f t n tdt t t t ωωω+++==??? (13) 2111111

()sin sin 2()sin n t T t T t T b f t n tdt n tdt T f t n tdt t t t ωωω+++==??? (14) 但是,要将周期信号分解为谐波分量,代表该周期信号的函数()f t 应当满足狄利克雷条件。即:

1)在一周期内,函数式绝对可积的,即21

|()|t T f t dt t +?应为有限值; 2)在一周期内,函数的极值数目有限;

3)在一周期内,函数()f t 或者为连续的,或者具有有限个这样的间断点,即当t 从较大的时间值和较小的时间值分别趋向于间断点时,函数具有两个不同的有限的极限值。

实际工程中的周期信号,大多都满足狄利克雷条件。周期性方波也满足上述条件,即方波可以展开为三角函数的加权和。

2.2 方波分解为多次正弦波之和的原理

由前一部分可知。代表周期性方波信号的函数()f t 满足狄利克雷条件,即方波可以表示为多次正弦波之和。如图1所示方波信号,其周期为2且正半周期负半周期是形状全同的矩形,在区间(0,2)内可用函数表示

为:

若将()f t 展开为三角傅里叶级数,即

将()f t 分解为多次正弦波之和,则有式

(13)、式(14)可知,在区间(0,2)内,

如图1 所示的周期为2的方波信号的0a , 图1 周期为2的方波信号

n a ,n b 的值分别为:

0a =202()02f t dt =?

n a =202()cos 02f t n tdt ω=?

n b =202()sin 0

2f t n tdt n ω=?当为偶数 202()sin 4/n 2n b f t n tdt n ωπ==?当为奇数

则在区间(0,2)内()f t 可表示为:

4111()(sin sin 3sin 5sin 7573f t t t t t πππππ=+++???) (15)

即周期为2s 的方波信号中含有大量的正弦波,其频率分别为1/2,3/2,5/2,7/2···其中频率为1/2的正弦波称为基波,其他频率的正弦波称为谐波。即一周期性方波,可表示为基波与无穷多谐波之和。

实用中进行信号分析时,不可能取无穷多次谐波之和,而只能用有限项来近似表示。这样就无法避免有一误差()t ε,如果将基波加到n 次谐波之和后的函数表示为()n f t ,则有()f t =()n f t +()t ε,即()t ε=()f t -()t ε。

1(01)()1(12)

t f t t ?<

3 建立模型描述

3.1正弦波合成并与原始方波进行比较模型的建立

由原理部分可知,方波中含有无穷多次的正弦波,即方波可以分解为无穷多次正弦波之和。反过来可用无限多次正弦波相加可以合成方波,从而完成设计。但是在实际中不可能取无穷中多次的正弦波,取有限次正弦波合成,相较于原始方波信号,必然存在一定的误差。若用误差函数()t ε表示误差。若方波信号函数表示为()f t ,多次正弦波合成后函数表示为()n f t ,则误差函数()t ε=()f t -()n f t 。然后利用相关绘图函数画出()f t 、()n f t 、()t ε即可。故设计建立的模型可表示如下:

图2 正弦波合成程序设计模型图示描述

其中产生方波可以调用square 函数。对于多次正弦波的合成可以使用一循环语句,通过使用input 输入循环的最大值N ,来控制合成的谐波的数量。然后通过subplot 函数建立三个子窗口,运用plot 函数在三个子窗口中分别画出原始方波、合成波以及误差函数的波形图即可。同时,利用subplot 函数建立三个子窗口,将原始方波,合成波及误差函数画在同一窗口下,可以更加直观的比较合成波与原始方波及观察误差函数。

3.2 其他模型的建立

在本次设计中,建立的其他相关的模型有谐波合成趋势二维图、三维图的模型;方波单边频谱图模型;方波与其分解后的各次谐波的比较图模型。这些相关模型建立的描述如下。

1)谐波合成趋势二维图、三维图相关模型。使用循环结构,通过输入循环次数控制合成谐波的数量。然后分别使用plot、mesh函数画出相关二维图,三维图即可。

2)方波单边频谱图模型的建立。由原理部分可以知道,方波分解为正弦波之和后各次谐波的振幅情况。通过stem函数画出各频率谐波的振幅情况即可。其中,较高次谐波的幅度较小,故频谱图无需画到太高的频率。

3)方波与其分解后的各次谐波的比较图模型的建立。由原理部分可以得知各次谐波的振幅。较高次谐波振幅太小,比较的意义不大,故只画到第11次谐波。写出基波到11次谐波的的函数表达式,然后利用plot函数画出方波与与基波及各次谐波的波形图并进行比较即可。

4 源程序代码

4.1 正弦波合成并与原始方波比较的源程序代码及运行结果

4.1.1 正弦波合成并与原始方波比较的源程序代码

正弦波合成并与原始方波进行比较的源程序代码如下:

%多次正弦波合成并与原始方波比较的设计

t=0:0.000111:6;

n=1;

fn=0;

y=square(pi*t,50);%周期为2s的方波

N=input('N=');%输入N值

for num=1:N

fn=fn+4/(n*pi)*sin(n*t*pi);%加到n次谐波正弦波之和

n=n+2;

end

fm=y-fn;%误差函数

subplot(3,1,1)%在第一个子窗口中画出原始方波图像

plot(t,y,'k'),grid on

axis([0 6 -2 2])

xlabel('时间s');ylabel('振幅');title('方波')

subplot(3,1,2)%在第二个子窗口中画出加到n次谐波的正弦波合成图像

plot(t,fn,'k'),grid on

xlabel('时间s ');ylabel('振幅');title('正弦波合成')

subplot(3,1,3)%在第三个子窗口中画出误差函数图像

plot(t,fm,'k'),

axis([0 6 -2 2])

xlabel('时间s');ylabel('振幅');title('误差函数')

源程序中,通过输入的N值控制for循环的次数,从而控制合成的谐波次数n以及合成的谐波数量。通过改变输入的N可以改变合成波的谐波的最高次数即相加的谐波次数,从而改变合成波的波形。通过比较加到不同次数的合成波的波形及其相应的误差函数波形,可以知道正弦波合成随级数增大的趋势情况。

4.1.2 程序运行结果

1)N=3时,原始方波,合成波及误差函数图像如下:

图3 原始方波,加到五次谐波的合成波及相应误差函数图像

2)N=10时,原始方波,合成波及误差函数图像如下:

图4 原始方波,加到19次谐波的合成波及相应误差函数图像通过比较图3、图4可知,相较于加到五次谐波的合成波形,加到十九次谐波的合成波波形更接近于原始方波波形,误差相对更小。

3)N=100时,原始方波,合成波及误差函数图像如下:

图5 原始方波,加到199次谐波的合成波及相应误差函数图像

由图上可以看出,当输入N=100时,合成波波形已经非常接近方波波形。除在方波跃变点附近合成波的波形与原始方波波形之间有较大误差之外,其他各处波形误差为零。

4)N=10000时,原始方波,合成波及误差函数图像如下:

图6 原始方波,加到19999次谐波的合成波及相应误差函数图像当N=10000时,由图上可以看出,除在方波跃变点处存在超过1的过冲外。其余地方误差基本为零。N=10000时可近似的认为谐波次数已取到无穷大,而跃变点的过冲依然较大。这是由于对于存在不连续点的函数,即使所取的级数为无穷大,在不连续处,仍不能使级数之和收敛于原始函数;在跃变点附近,总无法避免起伏振荡,从而使跃变点附近某些点的函数值超过1而形成过冲。当级数所取项数增多时,跃变点附近起伏振荡的时间将缩短,但其过冲值将趋近于9%的固定值。此即吉布斯现象。

4.2 正弦波合成趋势图源程序代码及运行结果

4.2.1 正弦波合成趋势图源程序代码

1)正弦波合成趋势图二维图源程序代码如下:

%谐波合成趋势二维图

t=0:0.0111:6;

y=zeros(1000,max(size(t));%建立全零矩阵

x=zeros(size(t));

n=1;

N=input('N=');%输入N值

for k=1:N

x=x+(4/(n*pi))*sin(n*pi*t);

y(n, : )=x;

n=n+2;

end

plot(t,y(1:101,: )),grid on

axis([0 6 -2 2])

xlabel('时间s');ylabel('振幅');title('正弦波合成趋势二维图')

该程序中,首先通过zeros函数建立相关全零矩阵并赋给x、y。然后利用for循环语句求出加到不同次数谐波的合成波。最后利用所建立的矩阵及plot函数画出合成波随级数增加合成波改变的二维趋势图。通过输入N值控制级数的项数。

2)正弦波合成趋势图三维图源程序代码如下:

%谐波合成趋势三维图

t=0:0.0111:2;

y=zeros(1000,max(size(t)));

x=zeros(size(t));

for k=1:2:200

x=x+sin(k*pi*t)/k; y((k+1)/2, : )=x;

end

halft=ceil(length(t)/2);

mesh(t(1:halft),[1:1000],y(: ,1:halft))

xlabel('时间s');ylabel('谐波次数');zlabel('振幅');title('谐波合成趋势三维图')

基本原理与上述二维图类似,通过建立全零矩阵,然后利用所建立的矩阵以及mesh 函数画出三维图。为使图形更加美观,只画出了合成波形的半个周期,即区间(0,1)内的合成波波形。该程序中也通过输入N值控制级数的项数。并且在图形中利用y轴表示级数项数的增加,这样可以更直观看到合成波随级数项数的变化情况。

4.2.2 程序运行结果

1)正弦波合成趋势二维图程序运行结果如下:

图7 正弦波合成趋势二维图

其中,输入的N=100,由趋势图可以看出,随着级数项数的增加,合成波逐渐趋近于方波。方波跃变点处的起伏振荡也非常明显,且跃变点处的起伏振荡存在的时间随着级数所取项数的增加而减少的趋势也相当明显。

2)正弦波合成趋势三维图如下:

图中x轴表示时间,y轴表示级数

项数的变化。z轴表示合成波的幅度。由

图上可以看出,随着谐波次数的增加,

合成波波形逐渐趋近于方波。图形中在

区间(0,1),合成波顶部随着级数项数的

增加,渐趋于平坦,且方波跃变处的起

伏振荡也较为明显。

图8 正弦波合成趋势三维图

4.3 方波单边频谱图源程序代码及运行结果

4.3.1 方波单边频谱图源程序代码

方波单边频谱图源程序代码如下:

%方波单边频谱图

n=1:8;

C(n)=4./(pi*(2*n-1));

stem((2*n-1)*pi,C) ;%画出频谱图

axis([0 50 0 1.3]),grid on

xlabel('角频率ω');ylabel('幅度');title('方波频谱图')

由原理部分可以知道各频率谐波对应的幅度,故由此可以写出各频率谐波对应的幅度的表达式。然后利用stem 函数画出周期为2的方波的频谱图即可。高频率的谐波的幅度较小,画出的意义不大,故本次设计画出的频谱角频率最高为15π。

4.3.2 程序运行结果

程序运行结果,即方波单边频谱图如下:

图9 方波单边频谱图

由原理部分可知,周期为2的方波分解为正弦波之后,基波及各次谐波的频率分别为

1/2,3/2,5/2,7/2···则相应的角频率分别为7ππππ、3、5、···对应的幅度分别为

4434547ππππ、、、···由上图可以看出,方波单边频谱图图中,角频率及相应的谐波幅度基本与理论相符。周期性信号的频谱时不连续的,即其频谱为离散谱。而以上所画的周期性方波的频谱与理论相符。

4.4 方波与其分解后的各次谐波的比较图源程序代码及运行结果4.4.1 方波与其分解后的各次谐波的比较图源程序代码

方波与其分解后的各次谐波的比较图源程序代码如下:

%方波与分解后各次谐波的比较

t=0:0.00111:6;

f=square(pi*t,50);%·方波

f1=4*sin(t*pi)/pi;%基波

f2=4*sin(3*t*pi)/(pi*3);%3次谐波

f3=4*sin(5*t*pi)/(pi*5);%5次谐波

f4=4*sin(7*t*pi)/(pi*7);%7次谐波

f5=4*sin(9*t*pi)/(pi*9);%9次谐波

f6=4*sin(11*t*pi)/(pi*11);%11次谐波

subplot(321),plot(t,f1);

hold on

plot(t,f,'k');

axis([0 6 -1.3 1.3]);

xlabel('时间s');ylabel('振幅');title('方波与基波')

subplot(322),plot(t,f2);

hold on

plot(t,f,'k');

axis([0 6 -1.3 1.3]);

xlabel('时间s');ylabel('振幅');title('方波与三次谐波')

subplot(323),plot(t,f3);

hold on

plot(t,f,'k');

axis([0 6 -1.3 1.3]);

xlabel('时间s');ylabel('振幅');title('方波与五次谐波')

subplot(324),plot(t,f4);

plot(t,f,'k');

axis([0 6 -1.3 1.3]);

xlabel('时间s');ylabel('振幅');title('方波与七次谐波')

subplot(325),plot(t,f5);

hold on

plot(t,f,'k');

axis([0 6 -1.3 1.3]);

xlabel('时间s');ylabel('振幅');title('方波与九次谐波')

subplot(326),plot(t,f6);

hold on

plot(t,f,'k');

axis([0 6 -1.3 1.3]);

xlabel(时间s');ylabel('振幅');title('方波与十一次谐波')

该程序为顺序结构,结构较为简单,只是简单的写出基波与各次谐波的表达式并产生方波。然后使用plot函数在一个图中画出各次谐波与方波的图形并作比较即可。由于谐波频率较高时,其振幅亦较小,与原始方波比较意义不大。故只画到第十一次谐波。

4.4.2 程序运行结果

程序运行结果,即方波与其分解后各次的比较图如下:

图10 方波与其分解后各次谐波比较图

由原理部分可知,基波频率与原始方波相同,其余谐波频率依次为原始方波频率的3

倍、5倍、7倍、9倍、11倍。而谐波幅度与其频率成反比。图形所示结果与原理相符。5 调试过程及结论

5.1 调试过程叙述

5.1.1 正弦波合成并与原始方波比较的源程序调试过程

在多次正弦波合成并与原始方波进行比较的设计中。在程序编写完成之后,运行程序,运行出来的图形与理论上应该出来的合成波形有较大的差距。但是Matlab并未报错。经检查程序发现,在将谐波合成的循环语句内,误将x=x+(4/(n*pi))*sin(n*pi*t);写成了x=x+(4/n*pi)*sin(3*pi*t)。将三改为n后再次运行程序,当输入的N值较低时,运行出来的波形与理论相符。但是,若输入的N值为10000时,在谐波合成的波形中,方波间断点处的冲击性过冲未被画出。与实际情况由一定偏离。在将时间改变的步长由0.0001改为0.000111后,运行结果基本符合理论情况。程序调试完成。

5.1.2 方波单边频谱图源程序调试过程

在方波单边频谱图的程序编写完成后,Matlab报错。错误原因为Error using / Matrix dimensions must agree。按照Matlab报错提示的错误原因及错误发生的地方,在源程序中将/改为./后,再次运行程序,频谱图形顺利画出。但是,画出的频谱图中存在偶数次的频率,与实际完全不符。通过检查stem函数的相关参数,将stem((n)*pi,C) ;语句中的(n)*pi改为((2*n-1)*pi),频谱图顺利画出,较好的符合了实际情况。

5.1.3 方波与其分解后的各次谐波的比较图源程序调试过程

在方波与其分解后各次谐波的比较图源程序编写完成后,运行程序,图形顺利画出。可是在所画的图形中,十一次谐波与九次谐波的振幅相同。但是两谐波频率均与理论实际相符合。检查十一次谐波表达式发现,其表达式中振幅编写存在错误。振幅误写为(pi*9),通过将振幅修改为(pi*11)后,再次运行程序。运行结果与理论相符。

5.1.4 正弦波合成趋势图源程序调试过程

正弦波合成趋势三维图源程序编写完成后,运行程序,发现合成波的振幅趋近于0.785,

π,由此,而原始方波振幅为1,程序运行结果与理论事实相比有一定误差。0.785等于4

我认为合成波表达式没有乘以4π。故在源程序中相应位置检查合成波的表达式,发现程序中合成波表达式确实存在错误。在将源程序中合成波表达式由x=x+sin(k*pi*t)/k;改成为

x=x+(4/pi)*sin(k*pi*t)/k;后再次运行程序。合成波图像振幅趋近与1,与理论相符。运行结果中也没有存在其他错误。程序调试完成。

而在正弦波合成趋势二维图程序编写完成并运行后。当输入N=100时,运行结果图中明显没有加到199次谐波的图形。经多次验证性运行后发现,若输入的N值大于10,则运行结果基本与输入N为10时结果相同。因此觉得可能是赋给y的全零矩阵行数设置过小,且画图函数语句plot(t,y(1:10,:)),中参数10设置也过小。通过将全零矩阵行数,即画图函数参数均改为1000后。再次运行程序,基本达到设计要求。程序调试完成。

5.2 结论

设计的相关程序的的运行结果已在第四部分展示,故在这里不再展示结果。通过所设计的程序的运行结果可得出的结论如下:

1)由正弦波合成并与原始方波进行比较的程序运行结果以及正弦波合成趋势图程序运行结果中可以看出。随着合成的谐波的项数的增加,合成波逐渐接近于方波。当项数趋于无穷大时,除合成波在方波跃变点存在起伏振荡外,合成波与方波基本没有差别。即无穷多次正弦波可以合成为方波因为本次设计是运用逆向思维,用正弦波合成方波来验证方波可以分解为正弦波之和。故由上述运行结果可以得出结论:方波可以分解为无穷多次正弦波之和。

2)由方波单边频谱图可以知道,本次设计所用的周期为2的周期性方波信号的频谱符合周期性信号的频谱特点。即○1周期性信号的频谱由不连续的线条组成,每一线条代表一个正弦分量。频谱为离散频谱。○2频谱的每一条谱线,只会出现在基波频率整数倍的频率上。不可能存在任何频率为基波频率非整数倍的分量。○3各条谱线的高度,也即各次谐波的幅度,是随着谐波次数的增高而逐渐减小的。

3)本次设计所用方波信号时间函数是周期为2的奇函数,平均值为零。由方波单边频谱图及方波与其分解后的各次谐波的比较图可以得出结论为。设计所用的方波分解后的各

、、、,次谐波的幅度为4n (n为整数,表示第n次谐波);各次谐波频率依次为12325272

即不存在偶次谐波;且不存在直流分量。上述结果均与与理论相符,即信号的时间函数为奇函数且平均值为零时,将其分解后。○1各次谐波的幅度与谐波次数成反比;○2不存在偶次谐波;○3不存在直流分量。

6 心得体会

本次课程设计原理较为简单,且在以前的课程中老师已经详细的讲解过。故设计过程中对于设计的原理的理解并未遇到太多困难。

但将原理应用于设计之中却并不是一件简单的事情。本次设计中需要调用的MATLAB 中的函数较多。而在以前基本未曾接触使用过这些函数,给设计的顺利完成造成了较大困难。首先在,正弦波合成并与方波进行比较的设计中,由于不知道使用square函数产生原始方波。产生原始方波时只好通过使用sign函数来产生方波信号。虽然实现了方波的产生,但是产生方波的语句相当复杂,编写该语句是多次发生错误,浪费了不少时间。后来通过查阅资料知道了square函数,然后利用square函数简洁方便的产生了方波。而在设计正弦波合成并与方波进行比较及正弦波合成趋势图的过程中,需要改变级数的项数。但设计之时,我不知道input函数,只能在在程序中修改修改相关参数来改变。这些程序设计的就不够合理。在学会使用input函数后,通过调用input函数,然后在程序运行时输入N值,轻易的就可以改变合成的谐波的项数。程序的合理性大为提高。

在遇到上述问题之后,在画方波的单边频谱之时,设计之前,通过认真思考确定程序的难点及所需调用的函数,然后充分查阅资料,掌握相关函数及其使用方法。同时,设计程序也较为简单。设计完成比较顺利

完成本次设计之后,我深刻地体会到在设计程序之前,一定要做好充分准备,以提高设计效率。同时提高所设计的程序的合理性,提高其运行效率。这样才能更好地完成设计要求。

在本次设计之后,通过将以前学过的信号与系统知识运用于实践之中,大大巩固了对所学知识的理解与掌握。同时通过运用MATLAB完成本次设计,对MATLAB的使用有了进一步的了解。也了解到了MATLAB中更多相关的很有用的函数。对以后的学习相信会有很大的帮助。

7 参考文献

[1] 管致中、夏恭恪、孟桥原著. 孟桥、夏恭恪修订.信号与线性系统(第五版). 北京:高等教育出版社.2011.11:95~112

[2] 吴大正.信号与线性系统分析(第四版)[M]. 北京:高等教育出版社. 2005:421~478

[3] 胡晓冬、董辰辉.《MATLAB从入门到精通》. 北京:人民邮电出版社.2010

8 附录

程序调用的MATLAB中的函数及相关参数的含义如下:

square函数:用于产生方波。其使用方法为y=square(t,duty),其中参数t控制产生方波的角频率;duty控制产生方波的占空比。

input函数:其使用方法为N=input(‘string’),在屏幕上显示括号中的字符串,将由键盘输入的值赋给N。从而改变程序中的N值。

subplot函数:用于建立子窗口。其使用方法为subplot(m,n,p),通过m、n的值可以控制建立的子窗口的数目。p用于选择子窗口。

plot函数:用于画出二维图。使用方法为plot(X,Y),画出每一个X值对应的Y值的二维图。

xlabel、ylabel、zlabel函数:用于在所画图形的坐标轴上添加标题。函数的使用方法为xlabel(‘string’)(其余两个与此类似),string为所要添加的标题。

title函数:用于添加图形的标题。使用方法为title(‘string’),string为所要添加的标题。

axis函数:用于控制图形坐标轴的变化范围。使用方法为axis([xmin,xmax,ymin,ymax])。这四个参数的含义分别为所画图形中x轴的最小值、最大值,y轴的最小值、最大值。

zeros函数:用于建立全零矩阵。使用方法为B=zeros(m,n),建立一个m×n的矩阵并赋给B。

stem函数:用于画出二维杆状图。使用方法为stem(X,Y),画出每一X对应的Y值的杆状图。可用于画出方波的频谱图。

相关文档
最新文档