代码:

%% ------------------------------------------------------------------------
%% 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的更多相关文章

  1. 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 ...

  2. DSP using MATLAB 示例 Example3.19

    代码: % Analog Signal Dt = 0.00005; t = -0.005:Dt:0.005; xa = exp(-1000*abs(t)); % Discrete-time Signa ...

  3. DSP using MATLAB示例Example3.18

    代码: % Analog Signal Dt = 0.00005; t = -0.005:Dt:0.005; xa = exp(-1000*abs(t)); % Continuous-time Fou ...

  4. 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 ...

  5. 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 ...

  6. DSP using MATLAB 示例Example3.17

  7. 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, ...

  8. 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 ...

  9. 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 ...

  10. 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 , ...

随机推荐

  1. Codeforces Round #534 (Div. 2) Solution

    A. Splitting into digits Solved. #include <bits/stdc++.h> using namespace std; int n; void sol ...

  2. jQuery源码分析--Event模块(3)

    最后剩下了事件的手动触发了.jQuery提供了两个函数trigger和triggerHandler来手动触发事件,可以触发原生事件和自定义的事件.这个触发不单只会触发有jQuery绑定事件,而且也会触 ...

  3. 几种Memcache的状态监控的工具,以及安装和使用【linux系统】

    1.Memcache-top的简介及安装和用法 简介:memcache-top是用perl语言编写的,可以运行在term下.它能够像top一样显示各个memcached节点的状态变化,其中包括系统管理 ...

  4. pyDay10

    内容来自廖雪峰的官方网站. 1.python的赋值语句:a, b, c = x, y, z 相当于 a = x, b = y, c = z.(事实上等式右边是一个tuple) 2.获得genarato ...

  5. 同样的输入,为什么Objects.hash()方法返回的hash值每次不一样?

    背景 开发过程中发现一个问题,项目中用Set保存AopMethod对象用于去重,但是发现即使往set中添加相同内容的对象,每次也能够添加成功. AopMethod类的部分代码如下: public cl ...

  6. Java加密代码 转换成Net版

    java版本自己封装base64 package com.qhong; import java.io.UnsupportedEncodingException; import org.apache.c ...

  7. springboot中websoket的使用

    知识点:springboot项目中,websoket实时推送技术的介绍与使用      一.双向通信 http协议通信只能由客户端发起请求,服务端返回查询结果,如果我们想定时获取服务端的状态变化,相对 ...

  8. 【Python】xlrd,NotImplementedError-formatting_info=True not yet implemented

    前言 Python需要读取Excel(.xls..xlsx)时通常使用xlrd模块:如果要对其内容进行编辑的话稍稍有些麻烦,通常的做法是使用xlutils的copy模块对原文件进行复制,然后保存成新的 ...

  9. [翻译]PyMongo官方文档

    PyMongo官方文档翻译 周煦辰 2016-06-30 这是本人翻译的PyMongo官方文档.现在网上分(抄)享(袭)的PyMongo博客文章很多,一方面这些文章本就是抄袭的,谈不上什么格式美观,另 ...

  10. freemarker多个checkbox一个以上被选中示例

    <tr> <td class="handColumn" colspan="5" > <#list deptHandNotConta ...