演示增采样和减采样信号的频谱.doc_第1页
演示增采样和减采样信号的频谱.doc_第2页
演示增采样和减采样信号的频谱.doc_第3页
演示增采样和减采样信号的频谱.doc_第4页
演示增采样和减采样信号的频谱.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

演示增采样、减采样的MATLAB 程序 (读者原封不动拷贝成MATLAB程序,加快即可运行)% 演示增采样、减采样的过程,给出信号及其频谱。%h_fig1 = figure;set(h_fig1, unit, normalized, position, 0.0, 0.0, 0.99, 0.94);set(h_fig1, defaultuicontrolunits, normalized);h_text1 = uicontrol(gcf, Style, text, Position, 0.22, 0.89, 0.62, 0.07,. String, 演示信号的增采样与减采样 , FontName, 黑体, ForegroundColor, r, . FontSize, 32, FontWeight, Bold, BackgroundColor, 1, 1, 1); set(gcf, color, w)h_pushbutton1 = uicontrol(h_fig1, Style, PushButton, Position, 0.8, 0.9, 0.08, 0.07,. string, 往下页, BackgroundColor, y, ForegroundColor, r, FontSize, 14, FontWeight, Bold,. callback, set(h_fig1,visible, off),. set(h_fig2,visible, on) )h_pushbutton2 = uicontrol(h_fig1, Style, PushButton, Position, 0.9, 0.9, 0.08, 0.07,. string, 退出, BackgroundColor, 0.8 0.9 0.8, ForegroundColor, r, FontSize, 14, FontWeight, Bold,. callback, delete(h_fig1), delete(h_fig2)h_axes01 = axes(Box, on, Position, 0.07, 0.17, 0.25, 0.2, FontSize, 8) % 在第 2 个图形窗中创建轴对象h_axes02 = axes(Box, on, Position, 0.4, 0.17, 0.25, 0.2, FontSize, 8) % 在第 2 个图形窗中创建轴对象h_axes03 = axes(Box, on, Position, 0.72, 0.17, 0.25, 0.2, FontSize, 8) % 在第 2 个图形窗中创建轴对象h_axes04 = axes(Box, on, Position, 0.07, 0.52, 0.25, 0.2, FontSize, 8) % 在第 2 个图形窗中创建轴对象h_axes05 = axes(Box, on, Position, 0.4, 0.52, 0.25, 0.2, FontSize, 8) % 在第 2 个图形窗中创建轴对象h_axes06 = axes(Box, on, Position, 0.72, 0.52 0.25, 0.2, FontSize, 8) % 在第 2 个图形窗中创建轴对象h_fig2 = figureset(h_fig2, unit, normalized, position, 0.0, 0.0, 0.99, 0.94);set(h_fig2, defaultuicontrolunits, normalized);h_text2 = uicontrol(h_fig2, Style, text, Position, 0.22, 0.92, 0.62, 0.07,. String, 演示信号的增采样与减采样 , FontName, 黑体, ForegroundColor, r, . FontSize, 28, FontWeight, Bold, BackgroundColor, 1, 1, 1); set(gcf, color, w)h_pushbutton3 = uicontrol(h_fig2, Style, PushButton, Position, 0.8, 0.92, 0.08, 0.07,. string, 往前页, BackgroundColor, y, ForegroundColor, r, FontSize, 14, FontWeight, Bold,. callback, set(h_fig2,visible, off),. set(h_fig1,visible, on)h_pushbutton4 = uicontrol(h_fig2, Style, PushButton, Position, 0.9, 0.92, 0.08, 0.07,. string, 退出, BackgroundColor,0.8 0.9 0.8, ForegroundColor, r, FontSize, 14, FontWeight, Bold,. callback, delete(h_fig1), delete(h_fig2) set(gcf, color, w)h_axes1 = axes(Box, on, Position, 0.07, 0.07, 0.25, 0.2, FontSize, 8) % 在第 2 个图形窗中创建轴对象h_axes2 = axes(Box, on, Position, 0.4, 0.07, 0.25, 0.2, FontSize, 8) % 在第 2 个图形窗中创建轴对象h_axes3 = axes(Box, on, Position, 0.72, 0.07, 0.25, 0.2, FontSize, 8) % 在第 2 个图形窗中创建轴对象h_axes4 = axes(Box, on, Position, 0.07, 0.37, 0.25, 0.2, FontSize, 8) % 在第 2 个图形窗中创建轴对象h_axes5 = axes(Box, on, Position, 0.4, 0.37, 0.25, 0.2, FontSize, 8) % 在第 2 个图形窗中创建轴对象h_axes6 = axes(Box, on, Position, 0.72, 0.37 0.25, 0.2, FontSize, 8) % 在第 2 个图形窗中创建轴对象h_axes7 = axes(Box, on, Position, 0.07, 0.67, 0.25, 0.2, FontSize, 8) % 在第 2 个图形窗中创建轴对象h_axes8 = axes(Box, on, Position, 0.4, 0.67, 0.25, 0.2, FontSize, 8) % 在第 2 个图形窗中创建轴对象h_axes9 = axes(Box, on, Position, 0.72, 0.67, 0.25, 0.2, FontSize, 8) % 在第 2 个图形窗中创建轴对象set(0, CurrentFigure, h_fig1);% -% 产生复合正弦序列 x(n) n1 = 0:15;x = sin(pi*n1/8) + 2*sin(pi*n1*2/8); w = 0:1:500*2*pi/500;% 求一个复合正弦序列 x(n) 的 DTFTX = x*exp(-j*n1*w);magX = abs(X);% 通过 FFT 求周期(16点)的复合正弦序列 x(n) 的 DFTk = 0:15;Xk = fft(x,16);magXk = abs(Xk(1:1:16);% 显示复合正弦序列 x(n) subplot(h_axes04)H=stem(n1,x); grid; set(H,markersize,2);line(0 16,0 0); axis(0,15,-3.1,3.1);xlabel(n, FontSize, 12); ylabel(x(n), FontSize, 12); title((1)给定的复合正弦序列, FontSize, 12);set(h_axes04, LineWidth, 2)% -% 显示复合正弦序列 x(n) 的 DTFT 模值subplot(h_axes05)plot(w/pi, magX,b); grid; set(gca, XTickMode, manual, XTick, 0,0.125,0.5,1,1.5,1.875,2);xlabel(w / pi, FontSize, 12); ylabel(|X(exp(jw)|, FontSize, 12); title((2)x(n) 的 DTFT 模值, FontSize, 12);% 显示复合正弦序列 x(n) 的 DFTsubplot(h_axes06)H=stem(k, magXk, b); grid; set(H,markersize, 2);xlabel(k, FontSize, 12); ylabel(|X(k)|, FontSize, 12); title((3)x(n) 的 DFT 模值, FontSize, 12); axis(0, 16, 0, 20);set(h_axes05, LineWidth, 2)% -% 在序列 x(n) 的每两个样点之间插入两个零值样点,得扩张序列 w(n)x1 = 1 0 0;w1 = x1* x;w = (w1(:);subplot(h_axes01)% 显示 w(n)H = stem(w,b); grid; set(H,markersize, 2); axis(0,48,-4.1,4.1); line(0 48, 0 0); text(25, 3, U = 3, FontWeight, Bold);xlabel(n, FontSize, 12); ylabel(w(n), FontSize, 12); title((4) x(n) 的样点之间补两个零值样点, FontSize, 12);% 求 w(n) 的 DTFTm = length(w);n2 = 0:m-1;w2 = 0:1:500*2*pi/500;W=w*exp(-j*n2*w2);magW = abs(W);% 通过 FFT 求 w(n) 的 DFTk1 = 0:47;Wk = fft(w);magWk = abs(Wk(1:1:48);% 显示 w(n) 的 DTFTsubplot(h_axes02)plot(w2 / pi, magW, b); grid; xlabel(w / pi, FontSize, 12); ylabel(|W(exp(jw)|, FontSize, 12); title((5) w(n) 的 DTFT, FontSize, 12); set(h_axes02, LineWidth, 2)% 显示 w(n) 的 DFTsubplot(h_axes03)H=stem(k1, magWk, b); grid; set(H,markersize, 2); axis(0, 48, 0, 20); xlabel(k, FontSize, 12); ylabel(|W(k)|, FontSize, 12); title((6)w(n) 的 DFT, FontSize, 12); set(h_axes01, LineWidth, 2)% -set(0, CurrentFigure, h_fig2);% 求理想低通滤波器的冲激响应N = 48; wc = pi/4;n3 = 0:N-1;r = (N-1)/2;hdn = sin(wc *(n3-r)/ pi./(n3-r); % 理想低通滤波器的冲激响应if rem(N,2)=0 hdn(r+1) = wc / pi;endwn1 = boxcar(N); % 矩形窗hn1 = hdn.*wn1 % 将冲激响应序列加窗(矩形窗),得序列 hn1wn2 = hamming(N); % Hamming 窗hn2 = 3*hdn.*wn2; % 将冲激响应序列加窗(Hamming 窗),得序列 hn2m1 = length(hn2);n4 = 0:m1-1;w3 = 0:1:500*2*pi/500;H=hn2 * exp(-j*n4*w3); % hn2 的 DTFT magH = abs(H); % 得 hn2 的 DTFT 的模值k2 = 0:47;Hk = fft(hn2); % 求 hn2 的 DFT magHk = abs(Hk(1:1:48); % 得 hn2 的 DFT 的模值subplot(h_axes7); % 显示加窗后的冲激响应序列 hn2H = stem(hn2,.); grid; axis(0,48,-0.2,0.8); line(0 48,0 0); xlabel(n, FontSize, 12); ylabel(h(n), FontSize, 12); title((7)加窗后的滤波器冲激响应序列, FontSize, 12);set(h_axes7, LineWidth, 2)subplot(h_axes8); % 显示加窗后的冲激响应序列 hn2 的 DTFT 模值plot(w3/pi,magH,b); grid;xlabel(w / pi, FontSize, 12); ylabel(|H(exp(jw)|, FontSize, 12); title((8)滤波器冲激响应序列的 DTFT, FontSize, 12);set(h_axes8, LineWidth, 2)set(gca, XTickMode, manual, XTick, 0,0.25,0.5,1,1.5,1.75,2);subplot(h_axes9); % 显示加窗后的冲激响应序列 hn2 的 DFT 模值H = stem(k2,magHk,b); grid; set(H,markersize, 2); axis(0,48,0,3.5); xlabel(k, FontSize, 12); ylabel(|H(k)|, FontSize, 12); title((9)滤波器冲激响应序列的 DFT, FontSize, 12); set(h_axes9, LineWidth, 2)% -k2 = 0:47;Vk = Wk .* Hk; % 对扩张序列 w(n) 进行低通滤波(使用经 Hamming 窗加窗的冲激响应序列)magVk =abs(Vk(1:1:48);v = ifft(Vk, 48); % 进行 IFFT运算,得滤波序列 vm2 = length(v);n5 = 0:m2-1;w3 = 0:1:500*2*pi/500; V = v * exp(-j*n5*w3); % 求滤波序列 v 的 DTFT magV = abs(V);subplot(h_axes4) % 显示滤波序列 v 的 DFT 模值H = stem(k2, magVk,b); grid; set(H,markersize,2); axis(0,48,0,60); xlabel(k, FontSize, 12); ylabel(|V(k)|, FontSize, 12); title((10)滤波序列 v(n) 的 DFT 模值, FontSize, 12);set(h_axes4, LineWidth, 2)subplot(h_axes5) % 显示滤波序列 v 的 DTFT 模值plot(w3/pi,magV,b); grid; xlabel(w / pi, FontSize, 12); ylabel(|V(exp(jw)|, FontSize, 12); title((11)滤波序列 v(n) 的 DTFT 模值, FontSize, 12); set(h_axes5, LineWidth, 2)subplot(h_axes6) % 显示滤波序列 v H = stem(n5,v,b); grid; set(H,markersize, 2); axis(0,48,-3.1,3.1); xlabel(n, FontSize, 12); ylabel(v(n), FontSize, 12); title((12)滤波序列 , FontSize, 12); set(h_axes6, LineWidth, 2)line(0 48,0 0);% -y = v(1:4:length(v); % 对滤波序列 v 进行抽取(因子D = 4), 得序列 y m3 = length(y);n6 = 0:m3-1;w3 = 0:1:500*2*pi/500;Y=y*exp(-j*n6*w3); % 求序列 y 的 DTFTmagY = abs(Y);k1 = 0:11;Yk = fft(y); % 求序列 y 的 DFTmagYk =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论