《DSP using MATLAB》Problem 5.6

频率采样定理是这样的:

由上述定理可知,一个有限长序列(假设为N)的DTFT等间隔采样,采样数至少大于等于N。
代码:
%% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
%% Output Info about this m-file
fprintf('\n***********************************************************\n');
fprintf(' <DSP using MATLAB> Problem 5.6 \n\n'); banner();
%% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ % --------------------------------------------------
% 1 x(n) = n + 1 n=[ 0:49]
% = 100-n n=[50:99]
% = 0 otherwise
% --------------------------------------------------
L = 50; n = [0:L-1]; N = 100; %k1 = [0 : N-1]; % wave parameters xn_1 = [n+1, 100-(n+50)]; % length 100
xn_2 = [xn_1, zeros(1,100)]; % padding 100 zeros figure('NumberTitle', 'off', 'Name', 'P5.6 xn_1 and xn_2')
set(gcf,'Color','white');
subplot(2,1,1); stem([0:N-1], xn_1);
xlabel('n'); ylabel('x(n)');
title('xn1 sequence'); grid on;
subplot(2,1,2); stem([0:length(xn_2)-1], xn_2);
xlabel('n'); ylabel('x(n)');
title('xn2 sequence'); grid on; % -------------------------------------------------------------
% X(jw), DTFT of x(n)
% -------------------------------------------------------------
MM1 = 500;
%k = [-MM : MM]; % [-pi, pi]
%k = [0:MM]; % [0, pi]
%w = (2*pi/MM) * k; [X1, w1] = dtft1(xn_1, [0:N-1], MM1); %[X] = dtft(xn_1, [0:N-1], w); magX1 = abs(X1); angX1 = angle(X1); realX1 = real(X1); imagX1 = imag(X1); figure('NumberTitle', 'off', 'Name', 'Problem 5.6 DTFT X(jw) of x(n)');
set(gcf,'Color','white');
subplot(2,1,1); plot(w1/pi, magX1); grid on;
title('Magnitude Part');
xlabel('frequency in \pi units'); ylabel('Magnitude');
subplot(2,1,2); plot(w1/pi, angX1); grid on;
title('Angle Part');
xlabel('frequency in \pi units'); ylabel('Phase'); figure('NumberTitle', 'off', 'Name', 'Problem 5.6 Real and Imag of X(jw)');
set(gcf,'Color','white');
subplot('2,1,1'); plot(w1/pi, realX1); grid on;
title('Real Part');
xlabel('frequency in \pi units'); ylabel('Real');
subplot('2,1,2'); plot(w1/pi, imagX1); grid on;
title('Imaginary Part');
xlabel('frequency in \pi units'); ylabel('Imaginary'); %% -----------------------------------------------------------------------
%% 10-point frequency sample of X(w), DTFT of xn1 sequence
%% then IDFS to get y1(n)
%% -----------------------------------------------------------------------
y1 = real( idfs( X1(1:100:1000), 10) ); figure('NumberTitle', 'off', 'Name', 'Problem 5.6 10-point IDFS X(jw)');
set(gcf,'Color','white');
%subplot(2,1,1);
stem([0:9], y1); grid on;
title('y1(n)');
xlabel('n'); ylabel('y1'); %% -----------------------------------------------------------------------
%% 200-point frequency sample of X(w), DTFT of xn1 sequence
%% then IDFS to get y2(n)
%% -----------------------------------------------------------------------
y2 = real( idfs(X1(1:5:1000), 200) );
figure('NumberTitle', 'off', 'Name', 'Problem 5.6 200-point IDFS X(jw)');
set(gcf,'Color','white');
%subplot(2,1,1);
stem([0:199], y2); grid on;
title('y2(n)');
xlabel('n'); ylabel('y2'); %% -----------------------------------------------------------------------
%% 100-point frequency sample of X(w), DTFT of xn1 sequence
%% then IDFS to get y3(n)
%% -----------------------------------------------------------------------
y3 = real( idfs(X1(1:10:1000), 100) );
figure('NumberTitle', 'off', 'Name', 'Problem 5.6 100-point IDFS X(jw)');
set(gcf,'Color','white');
%subplot(2,1,1);
stem([0:99], y3); grid on;
title('y3(n)');
xlabel('n'); ylabel('y3');
运行结果:
原始序列,长度为N=200,但是只有前100个元素不为零,可以看成长度为100的序列末尾补了100个零。

[-2π,2π]范围内的DTFT

[0,2π]范围内的DTFT

DTFT进行10等分采样,然后IDFS变换得到序列y1

DTFT进行200等分采样,然后IDFS变换得到序列y2

DTFT进行100等分采样,然后IDFS变换得到序列y3

由上图可知,y3(100等分DTFT再逆变换)与原始序列的非零部分相同,y2(200等分DTFT再逆变换)与原始序列完全相同,y1有畸变。
《DSP using MATLAB》Problem 5.6的更多相关文章
- 《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窗 代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ...
随机推荐
- Win10系列:C#应用控件基础1
Button控件 在Windows应用商店应用的开发中,Button控件是使用比较频繁的控件之一,当用户单击Button控件时,会触发相应的单击事件并在定义好的事件处理方法中执行指定的功能.下面将介绍 ...
- prototype:构造函数的真相、原型链
函数不是构造函数,但是当且仅当使用 new 时,函数调用会变成 ‘构造函数调用’.那么对 ’构造函数‘ 最准确的解释是:所有带 new 的函数调用. Nothing 只是一个普通的函数,但使用 new ...
- python-面向对象增强版
class Person: def __init__(self, name, id, gender, birth): self.name = name # 实例变量 对象里的变量 self.id = ...
- pyhton字符串
a = 5 # 1 + 1 = 10 + 1 = 11 + 1 = 100 + 1 = 101print(a.bit_length()) # 计算一个数字的二进制长度. a = 10# print(t ...
- Oracle 11gR2 Database UNDO表空间使用率居高不下处理
一.UNDO表空间监控图 Prometheus监控的到UNDO表空间使用率超过90%(90%为所有表空间告警阈值).从图中可以看到,多次增加UNDO表空间的DATAFILE,UNDO表空间达到40GB ...
- windows上dubbo-admin的安装
dubbo-admin的安装 (1)先下载好zookeeper包,因为启动dubbo-admin时需要先启动zookeeper zookeeper:dubbo的注册中心(自己下载 ,找到bin目录下的 ...
- 查找xml中的接口名及涉及表名并输出
#! /usr/bin/env python3 # -*- coding:utf-8 -*- import xml.dom.minidom #该模块被用来处理xml文件 import re #正则表 ...
- JavaWeb基础-认识JavaWeb
程序开发体系 B/S 浏览器/服务器 开发维护成本低 客户端负载低 安全性低 C/S 客户端/服务器 成本高 客户端负载高 安全性高 javaweb简介 静态网页 HTML CSS,人浏览的数据是始终 ...
- Vuejs2.0学习(Render函数,createElement,vm.$slots)
直接来到进阶部分, Render函数 直接来到Render,本来也想跳过,发现后面的路由貌似跟它还有点关联.先来看看Render 1.1 官网一开始就看的挺懵的,不知道讲的是啥,动手试了一下,一开头讲 ...
- 4.Python爬虫入门四之Urllib库的高级用法
1.设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Headers 的属性. 首先,打开我们的浏览 ...