《DSP using MATLAB》Problem 5.17
1、代码
%% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
%% Output Info about this m-file
fprintf('\n***********************************************************\n');
fprintf(' <DSP using MATLAB> Problem 5.17 \n\n'); banner();
%% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ % -------------------------------------------------------------------------------------
% X(k) is 10-point DFTs of real-valued sequence x(n)
% X(k) = [10, -2+3j, 3+4j, 2-3j, 4+5j, 12, 4-5j, 2+3j, 3-4j, -2-3j]
% N = 10 k=[0:9]
% 1 y(n) = x((2-n))10
% ------------------------------------------------------------------------------------- k1 = [0:9];
Xk_DFT = [10, -2+3j, 3+4j, 2-3j, 4+5j, 12, 4-5j, 2+3j, 3-4j, -2-3j];
N1 = length(Xk_DFT); % length is 10 magXk_DFT = abs( [ Xk_DFT ] ); % DFT magnitude
angXk_DFT = angle( [Xk_DFT] )/pi; % DFT angle
realXk_DFT = real(Xk_DFT); imagXk_DFT = imag(Xk_DFT); figure('NumberTitle', 'off', 'Name', 'P5.17.1 X(k), DFT of x(n)')
set(gcf,'Color','white');
subplot(2,2,1); stem(k1, magXk_DFT);
xlabel('k'); ylabel('magnitude(k)');
title('magnitude DFT of x(n), N=10'); grid on;
subplot(2,2,3); stem(k1, angXk_DFT);
%axis([-N/2, N/2, -0.5, 50.5]);
xlabel('k'); ylabel('angle(k)');
title('angle DFT of x(n), N=10'); grid on;
subplot(2,2,2); stem(k1, realXk_DFT);
xlabel('k'); ylabel('real (k)');
title('real DFT of x(n), N=10'); grid on;
subplot(2,2,4); stem(k1, imagXk_DFT);
%axis([-N/2, N/2, -0.5, 50.5]);
xlabel('k'); ylabel('imag (k)');
title('imag DFT of x(n), N=10'); grid on; [xn] = real(idft(Xk_DFT, N1)); % real-valued sequence
n = [0 : N1-1]; % +++++++++++++++++++++++++++++++++++++++++++++++++++++++
% 1st way to get y(n)-----circular shifft
% +++++++++++++++++++++++++++++++++++++++++++++++++++++++
xn_cirfold = xn(mod(-n,N1)+1);
m = 2; % shift
yn1 = cirshftt(xn_cirfold, m, length(xn)); Xfk_DFT = dft(xn_cirfold, N1);
magXfk_DFT = abs( [ Xfk_DFT ] ); % DFT magnitude
angXfk_DFT = angle( [Xfk_DFT] )/pi; % DFT angle
realXfk_DFT = real(Xfk_DFT); imagXfk_DFT = imag(Xfk_DFT); figure('NumberTitle', 'off', 'Name', 'P5.17.1 X((-k)), DFT of x((-n))')
set(gcf,'Color','white');
subplot(2,2,1); stem(k1, magXfk_DFT);
xlabel('k'); ylabel('magnitude(k)');
title('magnitude DFT of x((-n)), N=10'); grid on;
subplot(2,2,3); stem(k1, angXfk_DFT);
%axis([-N/2, N/2, -0.5, 50.5]);
xlabel('k'); ylabel('angle(k)');
title('angle DFT of x((-n)), N=10'); grid on;
subplot(2,2,2); stem(k1, realXfk_DFT);
xlabel('k'); ylabel('real (k)');
title('real DFT of x((-n)), N=10'); grid on;
subplot(2,2,4); stem(k1, imagXfk_DFT);
axis([0, 10, -5, 5.05]);
xlabel('k'); ylabel('imag (k)');
title('imag DFT of x((-n)), N=10'); grid on; % +++++++++++++++++++++++++++++++++++++++++++++++++++++++
% 2ed way to get y(n)-----IDFT of Y(k)
% +++++++++++++++++++++++++++++++++++++++++++++++++++++++
k1 = [0:9];
Yk_DFT = exp(-j*2*pi*(2*k1)/10) .* Xk_DFT(mod(-k1, N1)+1);
N1 = length(Yk_DFT); % length is 10 magYk_DFT = abs( [ Yk_DFT ] ); % DFT magnitude
angYk_DFT = angle( [Yk_DFT] )/pi; % DFT angle
realYk_DFT = real(Yk_DFT); imagYk_DFT = imag(Yk_DFT); figure('NumberTitle', 'off', 'Name', 'P5.17.1 DFT(k) of y(n)')
set(gcf,'Color','white');
subplot(2,2,1); stem(k1, magYk_DFT);
xlabel('k'); ylabel('magnitude(k)');
title('magnitude DFT of y(n), N=10'); grid on;
subplot(2,2,3); stem(k1, angYk_DFT);
xlabel('k'); ylabel('angle(k)');
title('angle DFT of y(n), N=10'); grid on;
subplot(2,2,2); stem(k1, realYk_DFT);
xlabel('k'); ylabel('real (k)');
title('real DFT of y(n), N=10'); grid on;
subplot(2,2,4); stem(k1, imagYk_DFT);
%axis([-N/2, N/2, -0.5, 50.5]);
xlabel('k'); ylabel('imag (k)');
title('imag DFT of y(n), N=10'); grid on; [yn2] = real(idft(Yk_DFT, N1));
n = [0 : N1-1]; figure('NumberTitle', 'off', 'Name', 'P5.17.1 x(n) & y(n)')
set(gcf,'Color','white');
subplot(2,2,1); stem(n, xn);
xlabel('n'); ylabel('x(n)');
title('x(n), IDFT of X(k)'); grid on;
subplot(2,2,2); stem(n, yn1);
xlabel('n'); ylabel('y(n)');
title('y(n) by circular shift x((2-n))_N N=10'); grid on;
subplot(2,2,3); stem(n, xn_cirfold);
xlabel('n'); ylabel('x((-n))');
title('x((-n)) N=10'); grid on;
subplot(2,2,4); stem(n, yn2);
xlabel('n'); ylabel('y(n)');
title('y(n) by IDFT of Y(k)'); grid on;
运行结果:
4、代码:
%% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
%% Output Info about this m-file
fprintf('\n***********************************************************\n');
fprintf(' <DSP using MATLAB> Problem 5.17 \n\n'); banner();
%% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ % -------------------------------------------------------------------------------------
% X(k) is 10-point DFTs of real-valued sequence x(n)
% X(k) = [10, -2+3j, 3+4j, 2-3j, 4+5j, 12, 4-5j, 2+3j, 3-4j, -2-3j]
% N = 10 k=[0:9]
% 4 y(n) = x(n) Circular-Conv x((-n))10
% ------------------------------------------------------------------------------------- k1 = [0:9];
Xk_DFT = [10, -2+3j, 3+4j, 2-3j, 4+5j, 12, 4-5j, 2+3j, 3-4j, -2-3j];
N1 = length(Xk_DFT); % length is 10 magXk_DFT = abs( [ Xk_DFT ] ); % DFT magnitude
angXk_DFT = angle( [Xk_DFT] )/pi; % DFT angle
realXk_DFT = real(Xk_DFT); imagXk_DFT = imag(Xk_DFT); figure('NumberTitle', 'off', 'Name', 'P5.17.4 X(k), DFT of x(n)')
set(gcf,'Color','white');
subplot(2,2,1); stem(k1, magXk_DFT);
xlabel('k'); ylabel('magnitude(k)');
title('magnitude DFT of x(n), N=10'); grid on;
subplot(2,2,3); stem(k1, angXk_DFT);
%axis([-N/2, N/2, -0.5, 50.5]);
xlabel('k'); ylabel('angle(k)');
title('angle DFT of x(n), N=10'); grid on;
subplot(2,2,2); stem(k1, realXk_DFT);
xlabel('k'); ylabel('real (k)');
title('real DFT of x(n), N=10'); grid on;
subplot(2,2,4); stem(k1, imagXk_DFT);
%axis([-N/2, N/2, -0.5, 50.5]);
xlabel('k'); ylabel('imag (k)');
title('imag DFT of x(n), N=10'); grid on; [xn] = real(idft(Xk_DFT, N1)); % real-valued sequence
n = [0 : N1-1]; % +++++++++++++++++++++++++++++++++++++++++++++++++++++++
% 1st way to get y(n)-----circular
% +++++++++++++++++++++++++++++++++++++++++++++++++++++++
xn_cirfold = xn(mod(-n,N1)+1);
yn1 = circonvt(xn, xn_cirfold, N1); % +++++++++++++++++++++++++++++++++++++++++++++++++++++++
% 2ed way to get y(n)-----IDFT of Y(k)
% +++++++++++++++++++++++++++++++++++++++++++++++++++++++
k1 = [0:9];
Xfk_DFT = dft(xn_cirfold, N1); Yk_DFT = Xk_DFT .* Xfk_DFT;
N1 = length(Yk_DFT); % length is 10 magYk_DFT = abs( [ Yk_DFT ] ); % DFT magnitude
angYk_DFT = angle( [Yk_DFT] )/pi; % DFT angle
realYk_DFT = real(Yk_DFT); imagYk_DFT = imag(Yk_DFT); figure('NumberTitle', 'off', 'Name', 'P5.17.4 DFT(k) of y(n)')
set(gcf,'Color','white');
subplot(2,2,1); stem(k1, magYk_DFT);
xlabel('k'); ylabel('magnitude(k)');
title('magnitude DFT of y(n), N=10'); grid on;
subplot(2,2,3); stem(k1, angYk_DFT);
xlabel('k'); ylabel('angle(k)');
title('angle DFT of y(n), N=10'); grid on;
subplot(2,2,2); stem(k1, realYk_DFT);
xlabel('k'); ylabel('real (k)');
title('real DFT of y(n), N=10'); grid on;
subplot(2,2,4); stem(k1, imagYk_DFT);
%axis([-N/2, N/2, -0.5, 50.5]);
xlabel('k'); ylabel('imag (k)');
title('imag DFT of y(n), N=10'); grid on; [yn2] = real(idft(Yk_DFT, N1));
n = [0 : N1-1]; figure('NumberTitle', 'off', 'Name', 'P5.17.4 x(n) & y(n)')
set(gcf,'Color','white');
subplot(2,2,1); stem(n, xn);
xlabel('n'); ylabel('x(n)');
title('x(n), IDFT of X(k)'); grid on;
subplot(2,2,2); stem(n, yn1);
xlabel('n'); ylabel('y(n)');
title('y(n) by x(n) Circular-Conv x((-n))_N N=10'); grid on;
%subplot(2,2,3); stem(n, xn_cirfold);
%xlabel('n'); ylabel('x((-n))');
%title('x((-n)) N=10'); grid on;
subplot(2,2,4); stem(n, yn2);
xlabel('n'); ylabel('y(n)');
title('y(n) by IDFT of Y(k)'); grid on;
运行结果:
《DSP using MATLAB》Problem 5.17的更多相关文章
- 《DSP using MATLAB》Problem 6.17
代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...
- 《DSP using MATLAB》Problem 3.17
用差分方程两边进行z变换,再变量带换得到频率响应函数(或转移函数,即LTI系统脉冲响应的DTFT). 代码: %% ------------------------------------------ ...
- 《DSP using MATLAB》Problem 2.17
1.代码: %% ------------------------------------------------------------------------ %% Output Info abo ...
- 《DSP using MATLAB》Problem 8.17
代码: %% ------------------------------------------------------------------------ %% Output Info about ...
- 《DSP using MATLAB》Problem 4.17
- 《DSP using MATLAB》Problem 5.22
代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% O ...
- 《DSP using MATLAB》Problem 5.15
代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...
- 《DSP using MATLAB》Problem 2.18
1.代码: function [y, H] = conv_tp(h, x) % Linear Convolution using Toeplitz Matrix % ----------------- ...
- 《DSP using MATLAB》Problem 7.28
又是一年五一节,朋友圈都是晒名山大川的,晒脑袋的,我这没钱的待在家里上网转转吧 频率采样法设计带通滤波器,过渡带中有一个样点 代码: %% ++++++++++++++++++++++++++++++ ...
随机推荐
- day044 cssy其他样式 js初识
float: 浮动 .t1{ float: right/left; } 关于浮动的两个特点: 1.浮动的框可以向左或向右移动,知道他的外边缘碰到包括框或另一个浮动框的边框为止. 2.由于浮动框不在文档 ...
- PC/FORTH定点原理
body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...
- java修饰符用法
public:本类可使用,子类可使用,同一包内的类可使用,不同包内的类可使用 protected:本类可使用,子类可使用(不同包内的子类也可使用),同一包内的类可使用 default(当不写修饰符时) ...
- (C/C++学习笔记) 二十四. 知识补充
二十四. 知识补充 ● 子类调用父类构造函数 ※ 为什么子类要调用父类的构造函数? 因为子类继承父类,会继承到父类中的数据,所以子类在进行对象初始化时,先调用父类的构造函数,这就是子类的实例化过程. ...
- tensorflow-softmax
之前在softmax多分类中讲到多用交叉熵作为损失函数,这里顺便写个例子,tensorlflow练手. # encoding:utf-8 import tensorflow as tf import ...
- 使用 DirectX 创建 3D 图形
官方链接 https://msdn.microsoft.com/zh-cn/library/windows/desktop/hh465137.aspx 使用 Windows 运行时初始化 Dire ...
- L293 给地球降温
Countries look at ways to tinker with Earth’s thermostat The idea of cooling the climate with strato ...
- Oracle中sysdba身份和dba角色区别
sysdba身份登陆可以打开,关闭数据库,创建SPFILE,对数据库进行恢复操作等,而这些是DBA角色无法实现的:sysdba 是系统权限,dba是用户对象权限: sysdba,是管理oracle实例 ...
- JAVA测试编程
本周我们上JAVA课的时候进行了一次测试,本次测试以模拟中国工商银行自助机ATM的功能为大致要求,要求我们进行编写调试,以求达到试题要求. 测试要求我们能模拟ATM的功能设计,当用户插卡后显示,输入密 ...
- 整理有关浏览器兼容性的css样式
去掉IE自带的删除功能的×号 input::-ms-clear{display:none;} 去掉IE自带密码框的眼睛样式 input::-ms-reveal{display:none;}