首页 > 编程知识 正文

信号的傅里叶级数,信号与系统傅里叶级数及傅里叶变换

时间:2023-05-06 16:14:53 阅读:268196 作者:3831

 

请问,MATLAB的代码用什么格式才不会和下面一样乱???

 

信号与系统实验

 

1.谐波的叠加

2.方波的函数逼近

3.吉布斯现象的验证

 

 

题目描述

1.写出由程序

t=-2*pi:0.001:2*pi;

y=sawtooth(0.5*t,1);

plot(t,y)

形成的信号经周期延拓得到的周期信号的时域表达式;手动计算函数的傅里叶系数,再代入方程,用MATLAB编程计算其指数形式的傅里叶系数(计算至11次谐波),画出前11次谐波叠加的波形,了解并指出吉布斯现象。

 

信号波形: t1=-2*pi:0.001:2*pi;y1=sawtooth(0.5*t1,1);subplot(2,1,1);plot(t1,y1); 周期延拓 :t2=-8*pi:0.001:8*pi;y2=sawtooth(0.5*mod(t2,4*pi),1);subplot(2,1,2);plot(t2,y2);谐波叠加:t=-2*pi:0.001:2*pi;g=zeros(size(t));f=zeros(size(t));for n=-11:11 g=1j/(n*pi); f=f+g*exp(1j*0.5*t*n);endy=sawtooth(0.5*t,1);xlabel('t');plot(t,y);hold on;plot(t,f);legend('y 原函数','f 谐波叠加波形图');

2. 利用square_wave函数f=,将t从0到4π等间隔取1001个值,输入非负整数n,输出为1001列的行向量,计算f对于不同输入n的输出,我们可以通过调用n=20或更大的函数来测试函数,并绘制波形图,读出 n = 200 时 square_wave 函数生成的波形,观察并记录该波形的参数,如幅度、周期等,用MATLAB的square函数画出一致的波形。

t = linspace(0, 4*pi, 1001);n = 200;for t1 = 1 : length(t) t2= t(t1); k = 1 : n; a = sin(t2* (2*k-1)); b = 2 * k - 1; theSum(t1) = sum(a ./ b);endplot(t,theSum);hold on;f=0.8*square(t);plot(t,f);axis([0 4*pi -1 1]);legend('square-wave','square');

3. 

(1)根据傅里叶级数反推出原函数f(t)的闭合形式;

(2)计算函数f(t)的傅里叶级数的三角形式,与上面的进行对比,观察原函数的傅里叶级数的cos项的系数。画出一些不同N值对应的的波形图,与原函数f(t)波形图进行对比,观察在哪些时刻f(t)与值相差最大,随着,二者的差值是逐渐趋近于一个确定的值还是无穷大,如果是一个确定的值,计算出来它,结合吉布斯现象,画差值与N的波形图。

 

(3)画出一些不同N值对应的的波形图,将其与的波形图进行对比,利用所学的信号与系统和数学知识分析它们不同的原因。画出一些不同N值对应的的波形图,与原函数f(t)波形图进行对比,观察在哪些时刻f(t)与值相差最大,随着,二者的差值是逐渐趋近于一个确定的值还是无穷大,如果是一个确定的值,计算出来它,结合吉布斯现象,画差值与N的波形图。

(4)画出一些不同N值对应的的波形图,将其与的波形图进行对比,利用所学的信号与系统和数学知识分析它们不同的原因。

 

(1)t=-pi:0.001:pi;y=-pi/2*sawtooth(t);n=5;f = zeros(size(t));for n0=1:n f=f+(sin(n0*t))/n0;endplot(t,f);hold on;plot(t,y);title(['n=', num2str(n)]);(3)t=-pi:0.001:pi;N=input(‘N=’);for j=1: N f = zeros(size(t)); for i=1:j f = f + (sin(i*t))/i; end fmax(j) = (max(f)-pi/2)/pi; end figure(1); plot(t, f, 'r');hold on; y=-pi/2*sawtooth(t);plot(t,y);axis([-4 4 -2 2]) ;title(['N=', num2str(N)]); figure(2); plot(fmax) ;legend('(f_{n}-f)/f(max)');axis([0 200 -0.2 0.15]);title('吉布斯现象');(4)t=-pi:0.001:pi;N=input(‘N=’);;F0= zeros(size(t));for j=1:N f = zeros(size(t)); for i=1:j f = f + (sin(i*t))/i; F0=F0+(sin(i*t))/i; end end F=F0/n;y=-pi/2*sawtooth(t);plot(t, f);hold on;plot(t,y);plot(t,F) ;title(['n=', num2str(n)]);legend('f_{N}(t)','sawtooth','F_{N}(t)');

 

 

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。