《DSP using MATLAB》示例Example 9.9

代码:
%% ------------------------------------------------------------------------
%% Output Info about this m-file
fprintf('\n***********************************************************\n');
fprintf(' <DSP using MATLAB> Exameple 9.9 \n\n'); time_stamp = datestr(now, 31);
[wkd1, wkd2] = weekday(today, 'long');
fprintf(' Now is %20s, and it is %7s \n\n', time_stamp, wkd2);
%% ------------------------------------------------------------------------ % Given parameters:
I = 5; Rp = 0.1; As = 30; wp = pi/I; ws = pi*0.32;
[delta1, delta2] = db2delta(Rp, As); weights = [delta2/delta1, 1];
n = [0:50]; x = cos(0.5*pi*n);
n1 = n(1:17); x1 = x(17:33); % for plotting purposes %% -----------------------------------------------------------------
%% Plot
%% ----------------------------------------------------------------- % Input signal
Hf1 = figure('units', 'inches', 'position', [1, 1, 8, 6], ...
'paperunits', 'inches', 'paperposition', [0, 0, 6, 4], ...
'NumberTitle', 'off', 'Name', 'Exameple 9.9');
set(gcf,'Color','white'); TF = 10; subplot(2, 2, 1);
Hs1 = stem(n1, x1, 'filled'); set(Hs1, 'markersize', 2, 'color', 'g');
axis([-1, 17, -1.2, 1.2]); grid on;
xlabel('n', 'vertical', 'middle'); ylabel('Amplitude');
title('Input Signal x(n)', 'fontsize', TF);
set(gca, 'xtick', [0:4:16]);
set(gca, 'ytick', [-1, 0, 1]); % Interpolation with Filter Design: Length M=31
M = 31; F = [0, wp, ws, pi]/pi; A = [I, I, 0, 0];
h = firpm(M-1, F, A, weights); y = upfirdn(x, h, I);
delay = (M-1)/2; % Delay imparted by the filter
m = delay+1:1:50*I+delay+1; y = y(m); m = 1:81; y = y(81:161); % for plotting subplot(2, 2, 2);
Hs2 = stem(m, y, 'filled'); axis([-5, 85, -1.2, 1.2]); grid on;
xlabel('n', 'vertical', 'middle'); ylabel('Amplitude');
title(' Output y(n): I = 5, Filter length=31', 'fontsize', TF);
set(gca, 'xtick', [0:4:16]*I);
set(gca, 'ytick', [-1, 0, 1]); % Interpolation with Filter Design: Length M = 51
M = 51; F = [0, wp, ws, pi]/pi; A = [I, I, 0, 0];
h = firpm(M-1, F, A, weights); y = upfirdn(x, h, I);
delay = (M-1)/2; % Delay imparted by the filter
m = delay+1:1:50*I+delay+1; y = y(m); m = 1:81; y = y(81:161); % for plotting subplot(2, 2, 3);
Hs3 = stem(m, y, 'filled'); axis([-5, 85, -1.2, 1.2]); grid on;
set(Hs3, 'markersize', 2, 'color', 'm');
xlabel('n', 'vertical', 'middle'); ylabel('Amplitude');
title('Output y(n): I = 5, Filter length=51 ', 'fontsize', TF);
set(gca, 'xtick', [0:4:16]*I);
set(gca, 'ytick', [-1, 0, 1]); % Interpolation with Filter Design : Length M = 81
M = 81; F = [0, wp, ws, pi]/pi; A = [I, I, 0, 0];
h = firpm(M-1, F, A, weights); y = upfirdn(x, h, I);
delay = (M-1)/2; % Delay imparted by the filter
m = delay+1:1:50*I+delay+1; y = y(m); m = 1:81; y = y(81:161); % for plotting subplot(2, 2, 4);
Hs4 = stem(m, y, 'filled'); axis([-5, 85, -1.2, 1.2]); grid on;
set(Hs4, 'markersize', 2, 'color', 'm');
xlabel('n', 'vertical', 'middle'); ylabel('Amplitude');
title('Output y(n): I = 5, Filter length=81 ', 'fontsize', TF);
set(gca, 'xtick', [0:4:16]*I);
set(gca, 'ytick', [-1, 0, 1]);
运行结果:

左上图是输入信号x(n)的一部分,右上图是使用长度为31的滤波器后得到的输出y(n)。对于滤波器延迟和过渡带响应来说,该图是正确的。令人惊讶的是插值后的信号不是其应该的模样。
峰值超过了1,形状有些变形。仔细看图9.20中的滤波器响应表现为宽的过渡带和小的衰减,必然会导致一些谱能量的泄漏,产生变形。
对于较大的阶数来说,滤波器低通特征较好。信号峰值接近1,并且其形状接近余弦波形。因此,一个好的滤波器设计甚至对一个简单的信号都是严格适用的。
《DSP using MATLAB》示例Example 9.9的更多相关文章
- DSP using MATLAB 示例Example3.21
代码: % Discrete-time Signal x1(n) % Ts = 0.0002; n = -25:1:25; nTs = n*Ts; Fs = 1/Ts; x = exp(-1000*a ...
- DSP using MATLAB 示例 Example3.19
代码: % Analog Signal Dt = 0.00005; t = -0.005:Dt:0.005; xa = exp(-1000*abs(t)); % Discrete-time Signa ...
- DSP using MATLAB示例Example3.18
代码: % Analog Signal Dt = 0.00005; t = -0.005:Dt:0.005; xa = exp(-1000*abs(t)); % Continuous-time Fou ...
- DSP using MATLAB 示例Example3.23
代码: % Discrete-time Signal x1(n) : Ts = 0.0002 Ts = 0.0002; n = -25:1:25; nTs = n*Ts; x1 = exp(-1000 ...
- DSP using MATLAB 示例Example3.22
代码: % Discrete-time Signal x2(n) Ts = 0.001; n = -5:1:5; nTs = n*Ts; Fs = 1/Ts; x = exp(-1000*abs(nT ...
- DSP using MATLAB 示例Example3.17
- DSP using MATLAB示例Example3.16
代码: b = [0.0181, 0.0543, 0.0543, 0.0181]; % filter coefficient array b a = [1.0000, -1.7600, 1.1829, ...
- DSP using MATLAB 示例 Example3.15
上代码: subplot(1,1,1); b = 1; a = [1, -0.8]; n = [0:100]; x = cos(0.05*pi*n); y = filter(b,a,x); figur ...
- DSP using MATLAB 示例 Example3.13
上代码: w = [0:1:500]*pi/500; % freqency between 0 and +pi, [0,pi] axis divided into 501 points. H = ex ...
- DSP using MATLAB 示例 Example3.12
用到的性质 代码: n = -5:10; x = sin(pi*n/2); k = -100:100; w = (pi/100)*k; % freqency between -pi and +pi , ...
随机推荐
- rails 日期取值
获取当前时间 当前时间 Time.now UTC时间, 国际标准时间 Time.now.utc 日相关 今日开始时间00:00:00 Time.now.beginning_of_day => 2 ...
- 23TCP通信
.pro 文件中加入:QT+=network 在Qt中实现TCP/IP服务器端通信的流程: 1.创建监听套接字,QTcpServer 2.将监听套接字设置为监听模式, listen 3.等待并接受客户 ...
- 什么是ASCII码文本文件
标准ASCII码方式(也称文本方式)存储的文件,更确切地说,英文.数字等字符存储的是ASCII码.文本文件中除了存储文件有效字符信息(包括能用ASCII码字符表示的回车.换行等信息)外,不能存储其他任 ...
- ubuntu 中启动SDK manager
Android SDK安装后,目录结构如下: root@localhost:/home/ranxf/Android/Sdk/android-sdk-linux# ll 总用量 drwxrwxr-x r ...
- smarty简单语法
什么是smarty及其安装 Smarty是一个php模板引擎,它分开了逻辑程序和外在的内容,提供了一种易于管理的方法. Smarty要求web服务器运行php4.0.6和以上版本. smarty安装需 ...
- PDO的三种连接数据库的方式
PDO的三种连接数据库的方式 PDO的出现是为了解决PHP与各个数据库的连接处理都有各自的函数的问题,它的高度抽象,使得使用起来极其的方便.由于最常用的搭配就是PHP+Mysql,所以这里就以连接 ...
- MySQL 学习笔记整理
1. 创建表 CREATE TABLE item( ID INT(6) NOT NULL AUTO_INCREMENT, Name CHAR(32) NOT NULL, Price DECI ...
- HTTP-java模拟Get请求小栗子
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...
- 如何表示各个时区的时间DateTime.ToString()
使用sqlite进行时间的插入的时候,使用了 DateTime.ToString("s") //s: 2008-06-15T21:15:07 插入到数据库之后,发现时间被加了8个 ...
- codeforces 11 B.Jumping Jack 想法题
B. Jumping Jack Jack is working on his jumping skills recently. Currently he's located at point zero ...