DSP using MATLAB 示例 Example3.12

Posted 沧海一粟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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  ,   [0,pi] axis divided into 101 points.
X = x * (exp(-j*pi/100)) .^ (n\'*k);           % DTFT of x

% signal decomposition
[xe,xo,m] = evenodd(x,n);                     % even and odd parts
XE = xe * (exp(-j*pi/100)) .^ (m\'*k);         % DTFT of xe 
XO = xo * (exp(-j*pi/100)) .^ (m\'*k);         % DTFT of xo 

magXE = abs(XE); angXE = angle(XE); realXE = real(XE); imagXE = imag(XE);
magXO = abs(XO); angXO = angle(XO); realXO = real(XO); imagXO = imag(XO);
magX  = abs(X);  angX  = angle(X);  realX  = real(X);  imagX  = imag(X);

%verification
XR = real(X);                                  % real part of X
error1 = max(abs(XE-XR));                      % Difference
XI = imag(X);                                  % imag part of X
error2 = max(abs(XO-j*XI));                    % Difference

figure(\'NumberTitle\', \'off\', \'Name\', \'x sequence\')
set(gcf,\'Color\',\'white\'); 
stem(n,x); title(\'x sequence\'); xlabel(\'n\'); ylabel(\'x(n)\'); grid on;

figure(\'NumberTitle\', \'off\', \'Name\', \'xe & xo sequence\')
set(gcf,\'Color\',\'white\'); 
subplot(2,1,1); stem(m,xe); title(\'xe sequence \');   xlabel(\'m\'); ylabel(\'xe(m)\'); grid on;
subplot(2,1,2); stem(m,xo); title(\'xo sequence \');   xlabel(\'m\'); ylabel(\'xo(m)\'); grid on;


%% --------------------------------------------------------------------
%%              START X\'s  mag ang real imag
%% --------------------------------------------------------------------
figure(\'NumberTitle\', \'off\', \'Name\', \'X its Magnitude and Angle, Real and Imaginary Part\');
set(gcf,\'Color\',\'white\'); 
subplot(2,2,1); plot(w/pi,magX); grid on;  axis([-1,1,0,9]); 
title(\'Magnitude Part\');
xlabel(\'frequency in \\pi units\'); ylabel(\'Magnitude  |X|\'); 
subplot(2,2,3); plot(w/pi, angX/pi); grid on;  axis([-1,1,-1,1]);
title(\'Angle Part\');
xlabel(\'frequency in \\pi units\'); ylabel(\'Radians/\\pi\');

subplot(\'2,2,2\'); plot(w/pi, realX); grid on;
title(\'Real Part\');
xlabel(\'frequency in \\pi units\'); ylabel(\'Real\');
subplot(\'2,2,4\'); plot(w/pi, imagX); grid on;
title(\'Imaginary Part\');
xlabel(\'frequency in \\pi units\'); ylabel(\'Imaginary\');
%% -------------------------------------------------------------------
%%             END X\'s  mag ang real imag
%% -------------------------------------------------------------------

%% --------------------------------------------------------------
%%           START XE\'s  mag ang real imag
%% --------------------------------------------------------------
figure(\'NumberTitle\', \'off\', \'Name\', \'XE its Magnitude and Angle, Real and Imaginary Part\');
set(gcf,\'Color\',\'white\'); 
subplot(2,2,1); plot(w/pi,magXE); grid on;  axis([-1,1,0,2]); 
title(\'Magnitude Part\');
xlabel(\'frequency in \\pi units\'); ylabel(\'Magnitude  |XE|\'); 
subplot(2,2,3); plot(w/pi, angXE/pi); grid on;  axis([-1,1,-1,1]);
title(\'Angle Part\');
xlabel(\'frequency in \\pi units\'); ylabel(\'Radians/\\pi\');

subplot(\'2,2,2\'); plot(w/pi, realXE); grid on;
title(\'Real Part\');
xlabel(\'frequency in \\pi units\'); ylabel(\'Real\');
subplot(\'2,2,4\'); plot(w/pi, imagXE); grid on;
title(\'Imaginary Part\');
xlabel(\'frequency in \\pi units\'); ylabel(\'Imaginary\');

%% --------------------------------------------------------------
%%             END XE\'s  mag ang real imag
%% --------------------------------------------------------------

%% --------------------------------------------------------------
%%           START XO\'s  mag ang real imag
%% --------------------------------------------------------------
figure(\'NumberTitle\', \'off\', \'Name\', \'XO its Magnitude and Angle, Real and Imaginary Part\');
set(gcf,\'Color\',\'white\'); 
subplot(2,2,1); plot(w/pi,magXO); grid on;  axis([-1,1,0,8]); 
title(\'Magnitude Part\');
xlabel(\'frequency in \\pi units\'); ylabel(\'Magnitude  |XO|\'); 
subplot(2,2,3); plot(w/pi, angXO/pi); grid on;  axis([-1,1,-1,1]);
title(\'Angle Part\');
xlabel(\'frequency in \\pi units\'); ylabel(\'Radians/\\pi\');

subplot(\'2,2,2\'); plot(w/pi, realXO); grid on;
title(\'Real Part\');
xlabel(\'frequency in \\pi units\'); ylabel(\'Real\');
subplot(\'2,2,4\'); plot(w/pi, imagXO); grid on;
title(\'Imaginary Part\');
xlabel(\'frequency in \\pi units\'); ylabel(\'Imaginary\');

%% --------------------------------------------------------------
%%             END XO\'s  mag ang real imag
%% --------------------------------------------------------------


%% ----------------------------------------------------------------
%%        START Graphical verification
%% ----------------------------------------------------------------
figure(\'NumberTitle\', \'off\', \'Name\', \'Graphical verification\');
set(gcf,\'Color\',\'white\'); 
subplot(2,2,1); plot(w/pi,XR); grid on; axis([-1,1,-2,2]);
xlabel(\'frequency in \\pi units\'); ylabel(\'Re(X)\'); title(\'Real Part of X \');
subplot(2,2,2); plot(w/pi,XI); grid on; axis([-1,1,-10,10]);
xlabel(\'frequency in \\pi units\'); ylabel(\'Im(X)\'); title(\'Imaginary Part of X \');

subplot(2,2,3); plot(w/pi,realXE); grid on; axis([-1,1,-2,2]);
xlabel(\'frequency in \\pi units\'); ylabel(\'XE\'); title(\'Transform of even part \');
subplot(2,2,4); plot(w/pi,imagXO); grid on; axis([-1,1,-10,10]);
xlabel(\'frequency in \\pi units\'); ylabel(\'XO\'); title(\'Transform of odd part\');

%% ----------------------------------------------------------------
%%        END Graphical verification
%% ----------------------------------------------------------------

  运行结果:

 

以上是关于DSP using MATLAB 示例 Example3.12的主要内容,如果未能解决你的问题,请参考以下文章

《DSP using MATLAB》示例Example 6.20

《DSP using MATLAB》示例Example5.17

《DSP using MATLAB》示例Example5.18

《DSP using MATLAB》示例Example5.21

DSP using MATLAB 示例Example3.17

《DSP using MATLAB》示例Example 8.8