- 1、本文档共57页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
dsp第6章b
6.2 用MATLAB实现连续系统的频域分析 6.2.1 周期信号频域分析的MATLAB实现 例 设周期性对称三角波幅度A=1,周期T=2,试用[WTBZ]MATLAB画出其频谱。 ;图 周期性对称三角波 ; 解 傅里叶系数 ;MATLAB程序如下: %program10.4-1 N=8; %计算n=-N到-1的傅里叶系数 n1=-N:-1; c1=-4*j*sin(n1*pi/2)/pi^2./n1.^2; %计算n=0时的傅里叶系数 c0=0; %计算n=1~N的傅里叶系数 n2=1:N; c2=-4*j*sin(n2*pi/2)/pi^2./n2.^2; ; cn=[c1 c0 c2]; n=-N:N; subplot(2,1,1); stem (n, abs ( cn ),′.′); ylabel (′Cn的幅度′); subplot(2,1,2); stem (n, angle (cn),′.′); ylabel(′Cn的相位′); xlabel(′\omega/\omega0′); 信号频谱图如图10.4-2所示,显然这是一个离散频谱。 ;图 程序运行结果 ;傅立叶分析例6.7 方波分解为多次正弦波之和;第六章例6.7程序q607方波表为多阶正弦波之和
t = 0:.01:2*pi; % 设定一个时间数组,有101个点
y = sin(t);plot(t,y) ,pause
% 频率为w=1(f=1/2π)的正弦基波
y = sin(t) + sin(3*t)/3; plot(t,y), pause
% 叠加三次谐波
% 用1,3,5,7,9次谐波叠加
y = sin(t) + sin(3*t)/3 + sin(5*t)/5 + sin(7*t)/7 + sin(9*t)/9;plot(t,y);Date;% 为了绘制三维曲面,要把各次波形数据存为一个三维数组,因此必须重新定义y,重编程。
y = zeros(10,max(size(t))); x = zeros(size(t));
for k=1:2:19
x = x + sin(k*t)/k; y((k+1)/2,: ) = x;
end
% 将各波形迭合绘出
pause, figure(1),plot(t,y(1:9,: )),grid
line([0,pi+0.5],[pi/4,pi/4])% 加上方波幅度线及标注
text(pi+0.5,pi/4,pi/4)
% 将各半波形绘成三维网格图,看出增加谐波阶次对方波逼近程度的影响
halft=ceil(length(t)/2);
pause, figure(2),mesh(t(1:halft),[1:10],y(:,1:halft)), pause %只用正半周波形(见下页的解析);温故而知新:;Date;Date;6.2.2 非周期信号频域分析的MATLAB实现 MATLAB提供了许多数值计算工具,可以用来进行信号的频谱分析。quadl是计算数值积分的函数,有下面两种调用方式: y=quadl(′F′,a,b) y=quadl(′F′,a,b,[],[],P)其中,F是一个字符串,表示被积函数的文件名;a、b分别表示定积分的下限和上限;P表示被积函数中的一个参数。quad8的返回值是用自适应Simpson算法得出的积分值。 ; 例 试用数值积分法近似计算三角波信号f(t)=(1-|t|)g2(t)的频谱。 解 为了用quad(或者quadl,quad8)计算f(t)的频谱,定义如下MATLAB函数: functiony=sf1(t,w); y=(t=-1t=1).*(1-abs(t)).*exp(-j*w*t);对不同的参数w,函数sf1将计算出傅里叶变换积分式中被积函数的值。将上述MATLAB函数用文件名sf1.m存入计算机磁盘。近似计算信号频谱的MATLAB程序为 ; %program10.4-3 w=linspace(-6*pi,6*pi,512); N=length(w);F=zeros(1,N); for k=1:N F(k)=quad(′sf1′,-1,1,[],[],w(k)); end figure(1); plot(w,real(F)); xlabel(′\omega′); ylabel(′F(j\omega)′); ;程序运行
文档评论(0)