《DSP using MATLAB》Problem 9.4
只放第1小题。
代码:
- %% ------------------------------------------------------------------------
- %% Output Info about this m-file
- fprintf('\n***********************************************************\n');
- fprintf(' <DSP using MATLAB> Problem 9.4.1 \n\n');
- banner();
- %% ------------------------------------------------------------------------
- % ------------------------------------------------------------
- % PART 1
- % ------------------------------------------------------------
- % Discrete time signal
- n1_start = 0; n1_end = 100;
- n1 = [n1_start:1:n1_end];
- xn1 = cos(0.15*pi*n1); % digital signal
- D = 4; % downsample by factor D
- OFFSET = 0;
- y = downsample(xn1, D, OFFSET);
- ny = [n1_start:n1_end/D];
- % ny = [n1_start:n1_end/D-1]; % OFFSET=2
- figure('NumberTitle', 'off', 'Name', 'Problem 9.4.1 xn1 and y')
- set(gcf,'Color','white');
- subplot(2,1,1); stem(n1, xn1, 'b');
- xlabel('n'); ylabel('x(n)');
- title('xn1 original sequence'); grid on;
- subplot(2,1,2); stem(ny, y, 'r');
- xlabel('ny'); ylabel('y(n)');
- title(sprintf('y sequence, downsample by D=%d offset=%d', D, OFFSET)); grid on;
- % ----------------------------
- % DTFT of xn1
- % ----------------------------
- M = 500;
- [X1, w] = dtft1(xn1, n1, M);
- magX1 = abs(X1); angX1 = angle(X1); realX1 = real(X1); imagX1 = imag(X1);
- max(magX1)
- %% --------------------------------------------------------------------
- %% START X(w)'s mag ang real imag
- %% --------------------------------------------------------------------
- figure('NumberTitle', 'off', 'Name', 'Problem 9.4.1 X1 DTFT');
- set(gcf,'Color','white');
- subplot(2,1,1); plot(w/pi,magX1); grid on; %axis([-2, -1, -0.5, 0, 0.15, 0.5, 1, 2]);
- title('Magnitude Response');
- xlabel('digital frequency in \pi units'); ylabel('Magnitude |H|');
- set(gca, 'xtick', [-2,-1.85,-1.5,-1,-0.15,0,0.15,0.5,1,1.5,1.85,2]);
- subplot(2,1,2); plot(w/pi, angX1/pi); grid on; %axis([-1,1,-1.05,1.05]);
- title('Phase Response');
- xlabel('digital frequency in \pi units'); ylabel('Radians/\pi');
- figure('NumberTitle', 'off', 'Name', 'Problem 9.4.1 X1 DTFT');
- set(gcf,'Color','white');
- subplot(2,1,1); plot(w/pi, realX1); grid on;
- title('Real Part');
- xlabel('digital frequency in \pi units'); ylabel('Real');
- subplot(2,1,2); plot(w/pi, imagX1); grid on;
- title('Imaginary Part');
- xlabel('digital frequency in \pi units'); ylabel('Imaginary');
- %% -------------------------------------------------------------------
- %% END X's mag ang real imag
- %% -------------------------------------------------------------------
- % ----------------------------
- % DTFT of y
- % ----------------------------
- M = 500;
- [Y, w] = dtft1(y, ny, M);
- magY_DTFT = abs(Y); angY_DTFT = angle(Y); realY_DTFT = real(Y); imagY_DTFT = imag(Y);
- max(magY_DTFT)
- ratio = max(magX1)/max(magY_DTFT)
- %% --------------------------------------------------------------------
- %% START Y(w)'s mag ang real imag
- %% --------------------------------------------------------------------
- figure('NumberTitle', 'off', 'Name', 'Problem 9.4.1 Y DTFT');
- set(gcf,'Color','white');
- subplot(2,1,1); plot(w/pi, magY_DTFT); grid on; %axis([-2,2, -1, 2]);
- title('Magnitude Response');
- xlabel('digital frequency in \pi units'); ylabel('Magnitude |H|');
- set(gca, 'xtick', [-2,-1.4,-1,-0.6,0,0.6,1,1.4,2]);
- subplot(2,1,2); plot(w/pi, angY_DTFT/pi); grid on; %axis([-1,1,-1.05,1.05]);
- title('Phase Response');
- xlabel('digital frequency in \pi units'); ylabel('Radians/\pi');
- figure('NumberTitle', 'off', 'Name', 'Problem 9.4.1 Y DTFT');
- set(gcf,'Color','white');
- subplot(2,1,1); plot(w/pi, realY_DTFT); grid on;
- title('Real Part');
- xlabel('digital frequency in \pi units'); ylabel('Real');
- subplot(2,1,2); plot(w/pi, imagY_DTFT); grid on;
- title('Imaginary Part');
- xlabel('digital frequency in \pi units'); ylabel('Imaginary');
- %% -------------------------------------------------------------------
- %% END Y's mag ang real imag
- %% -------------------------------------------------------------------
- figure('NumberTitle', 'off', 'Name', sprintf('Problem 9.4.1 X1 & Y--DTFT of x and y, D=%d offset=%d', D,OFFSET));
- set(gcf,'Color','white');
- subplot(2,1,1); plot(w/pi,magX1); grid on; %axis([-1,1,0,1.05]);
- title('Magnitude Response');
- xlabel('digital frequency in \pi units'); ylabel('Magnitude |H|');
- set(gca, 'xtick', [-2,-1.85,-1.4,-1,-0.6,-0.5,-0.15,0,0.15,0.5,0.6,1,1.4,1.85,2]);
- set(gca, 'ytick', [-0.2, 0, 13.5, 20, 40, 51, 60]);
- hold on;
- plot(w/pi, magY_DTFT, 'r'); gtext('magY(\omega)', 'Color', 'r');
- hold off;
- subplot(2,1,2); plot(w/pi, angX1/pi); grid on; %axis([-1,1,-1.05,1.05]);
- title('Phase Response');
- xlabel('digital frequency in \pi units'); ylabel('Radians/\pi');
- hold on;
- plot(w/pi, angY_DTFT/pi, 'r'); gtext('AngY(\omega)', 'Color', 'r');
- hold off;
运行结果:
分两种情况
1、按照D=4抽取,offset=0
原始序列,抽取序列
原始序列的谱
抽取序列的谱
二者的DTFT混叠到一起,红颜色曲线是抽取序列的DTFT,可看出,其幅度大致为原始序列的谱幅度的1/4(精确值是1/3.7778)。
2、按照D=4抽取,offset=2
二者的DTFT混叠到一起,红颜色曲线是抽取序列的DTFT,可看出,其幅度大致为原始序列的谱幅度的1/4(精确值是1/4.0699)。
《DSP using MATLAB》Problem 9.4的更多相关文章
- 《DSP using MATLAB》Problem 7.27
代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...
- 《DSP using MATLAB》Problem 7.26
注意:高通的线性相位FIR滤波器,不能是第2类,所以其长度必须为奇数.这里取M=31,过渡带里采样值抄书上的. 代码: %% +++++++++++++++++++++++++++++++++++++ ...
- 《DSP using MATLAB》Problem 7.25
代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...
- 《DSP using MATLAB》Problem 7.24
又到清明时节,…… 注意:带阻滤波器不能用第2类线性相位滤波器实现,我们采用第1类,长度为基数,选M=61 代码: %% +++++++++++++++++++++++++++++++++++++++ ...
- 《DSP using MATLAB》Problem 7.23
%% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output Info a ...
- 《DSP using MATLAB》Problem 7.16
使用一种固定窗函数法设计带通滤波器. 代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ...
- 《DSP using MATLAB》Problem 7.15
用Kaiser窗方法设计一个台阶状滤波器. 代码: %% +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ...
- 《DSP using MATLAB》Problem 7.14
代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...
- 《DSP using MATLAB》Problem 7.13
代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...
- 《DSP using MATLAB》Problem 7.12
阻带衰减50dB,我们选Hamming窗 代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ...
随机推荐
- docker 镜像中心搭建
1.由于国外镜像很慢,所以用了网易蜂巢的镜像docker pull hub.c.163.com/library/registry:2.5.2本地的存储空间挂载到容器内部,持久保存镜像中心文件docke ...
- sublime 文件无法拖放
sublime 文件无法拖放解决方法 https://github.com/emetio/pyv8-binaries 解决: 1. 去gihub下载 PyV8,连接地址:https://github. ...
- UVA 1525 Falling Leaves
题目链接:https://vjudge.net/problem/UVA-1525 题目链接:https://vjudge.net/problem/POJ-1577 题目大意 略. 分析 建树,然后先序 ...
- Kali Linux 2018 更新源配置
查看添加更新源 编辑sources.list,将kali更新源加入其中 sudo vim /etc/apt/sources.list 国内更新源 #阿里云 deb http://mirrors.ali ...
- 关于 CShellManager 的作用
也许大家看到这个题目,未曾进行windows shell编程的同学呢,会不明白是什么意思,这里简单的介绍一下,windows shell就是可以使编写的程序与系统关联(如快捷方式,托盘图标等),管理系 ...
- 注册页面-使用form模块搭建
基于Django的form模块,快速的搭建注册页面,每个限制条件,都放在form模块里面,不单独对每一项编写标签,使用模版的 for 循环来渲染. 首先设置form模块 在blogs模块下创建一个bl ...
- <python练习题>python练习题(常练勿忘)
学了python,去面试经常出现,某个或某些库不熟悉导则想不起来怎么写,知道思路而写不出来,多半还是不够熟悉,这里就作为熟悉python的地方,多做做题,多思考. 题目1:店铺ID为00000000- ...
- hdu6319 Ascending Rating /// 单调队列
题目大意: 给定n m k,p q r mod, 给出序列的前k项 之后的按公式 a[i]=(p×a[i-1]+q×i+r)%mod 递推 求序列中每个长度为m的连续区间的 该区间最大值与第一位的位置 ...
- vue中beforeRouteEnter 执行的时机及运用的误区?
beforeRouteEnter钩子 beforeRouteEnter (to, from, next) { console.log(this); //undefined,不能用this来获取vue实 ...
- C# 获取系统开机时间
原文:C# 获取系统开机时间 /// /// 获取系统开机时间 /// /// private DateTime GetComput ...