《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窗 代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ...
随机推荐
- laravel的firstOrCreate的作用:先查找表,如果有就输出数据,如果没有就插入数据
public function zan(Post $post){ $param=[ 'user_id'=>\Auth::id(), 'post_id'=>$post->id ] Za ...
- vue常见开发问题整理
1.(webpack)vue-cli构建的项目如何设置每个页面的title 在路由里每个都添加一个meta [{ path:'/login', meta: { title: '登录页面' }, com ...
- netty]--最通用TCP黏包解决方案
netty]--最通用TCP黏包解决方案:LengthFieldBasedFrameDecoder和LengthFieldPrepender 2017年02月19日 15:02:11 惜暮 阅读数:1 ...
- ssm框架整合中的双亲容器
SSM中Spring双亲容器的构造过程和XML加载顺序 Spring的父子容器问题和坑 Spring使用父子容器实现了很多功能,比如在Spring MVC中,展现层Bean位于一个子容器中,而业务层和 ...
- Mybatis之trim标签的理解
最近在学Mybatis,在学到动态sql的trim标签时,很迷惑.不知所以然.看别人的博客和论坛里的解释,太宽泛,还是不能理解: trim元素的主要功能是可以在自己包含的内容前加上某些前缀,也可以在其 ...
- css3宽高设置:calc() / vw / vh
对于720px的设计稿,100vw == 720px,1vw == 7.2px; vw可以替代rem 实现自适应布局. 相应的计算插件:postcss-px-to-viewport ******** ...
- L260
Innovative UK technology that can deliver drugs deep into the brain to treat neurological diseases, ...
- 5-log4j2.xml配置文件各个节点详解
具体配置参考官网:http://logging.apache.org/log4j/2.x/manual/configuration.html 一.log.xml文件的大致结构 <?xml ver ...
- mkdir 获得新建文件权限
使用mkdir创建文件夹时,发现这个函数有两个参数,第二个参数是为新创建的文件夹指定权限. 但是如果直接用mkdir('文件地址', 0777);时 发现新文件夹的权限并不是777,一般情况下会是02 ...
- Ajax的简单介绍与使用
1.什么是Ajax? Ajax(Asynchronous JavaScript and XML),简单说就是不需要刷新当前页面而实现javaScript和和后台服务器交换数据以更新网页中的部分内容. ...