《演示增采样和减采样信号的频谱》由会员分享,可在线阅读,更多相关《演示增采样和减采样信号的频谱(6页珍藏版)》请在金锄头文库上搜索。
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, 演示信号的增采样与减采样 , FontNa
2、me, 黑体, 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,vis
3、ible, 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.1
4、7, 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 个图形
5、窗中创建轴对象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, normali
6、zed);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,
7、.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, FontSiz
8、e, 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.0
9、7, 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 个图形窗中创建
10、轴对象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);% -% 产生
11、复合正弦序列 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
12、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, FontSiz
13、e, 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, 1