• 《DSP using MATLAB》Problem 3.8


             2018年元旦,他乡加班中,外面尽是些放炮的,别人的繁华与我无关。

    代码:

    %% ------------------------------------------------------------------------
    %%            Output Info about this m-file
    fprintf('
    ***********************************************************
    ');
    fprintf('        <DSP using MATLAB> Problem 3.8 
    
    ');
    
    banner();
    %% ------------------------------------------------------------------------
    n_start = -5; n_end = 30;
    n = [n_start:n_end]; 
    x = exp(j*0.1*pi*n) .* (stepseq(0, n_start, n_end)-stepseq(20, n_start, n_end)); 
    
    
    figure('NumberTitle', 'off', 'Name', 'Problem 3.8 x(n)')
    set(gcf,'Color',[1,1,1])                  % 改变坐标外围背景颜色
    subplot(2,1,1); stem(n, real(x)); title('x sequence Real Part');
    xlabel('n'); ylabel('Real[x(n)]') ;
    % axis([-10,10,0,1.2])
    grid on
    subplot(2,1,2); stem(n, imag(x)); title('x sequence Imag Part');
    xlabel('n'); ylabel('Imag[x(n)]');
    grid on;
    
    
    % ----------------------------------------------------
    %                       DTFT of x(n)
    % ----------------------------------------------------
    
    MM = 500;
    k = [-MM:MM];        % [-pi, pi]
    %k = [0:M];          % [0, pi]
    w = (pi/MM) * k;
    
    [X] = dtft(x, n, w);                            
    
    magX = abs(X); angX = angle(X); realX = real(X); imagX = imag(X);
    
    figure('NumberTitle', 'off', 'Name', 'Problem 3.8 X(w)--DTFT of x(n)'); 
    set(gcf,'Color','white');
    subplot(2,1,1); plot(w/pi, magX); grid on; 
    title('Magnitude Part of X(w)');
    xlabel('frequency in pi units'); ylabel('Magnitude'); 
    subplot(2,1,2); plot(w/pi, angX); grid on;
    title('Angle Part of X(w)');
    xlabel('frequency in pi units'); ylabel('Radians');
    
    figure('NumberTitle', 'off', 'Name', 'Problem 3.8 Real and Imag of X(w)'); 
    set(gcf,'Color','white');
    subplot('2,1,1'); stem(w/pi, realX); grid on;
    title('Real Part of X(w)');
    xlabel('frequency in pi units'); ylabel('Real');
    subplot('2,1,2'); stem(w/pi, imagX); grid on;
    title('Imaginary Part of X(w)');
    xlabel('frequency in pi units'); ylabel('Imaginary');
    
    
    
    %% ----------------------------------------------------
    %%            Even and Odd part of X(jw)
    %% ----------------------------------------------------
    [XE, XO, m] = evenodd_cv(X, w/pi*500);
    
    figure('NumberTitle', 'off', 'Name', 'Problem 3.8 XE(m)--Even of X(w)')
    set(gcf,'Color',[1,1,1]) 
    subplot(2,1,1); stem(m/500, real(XE)); title('Real Part of Even Sequence');
    xlabel('m in pi units'); ylabel('Real[XE(m)]'); 
    %axis([-10,10,0,1.2])
    grid on
    subplot(2,1,2); stem(m/500, imag(XE)); title('Imag Part of Even Sequence');
    xlabel('m in pi units'); ylabel('Imag[XE(m)]'); 
    %axis([-10,10,0,1.2])
    grid on
    
    
    figure('NumberTitle', 'off', 'Name', 'Problem 3.8 XO(m)--Odd of X(w)')
    set(gcf,'Color','white')
    subplot(2,1,1); stem(m/500, real(XO)); title('Real Part of Odd Sequence');
    xlabel('m in pi units'); ylabel('Real[XO(m)]'); 
    %axis([-10,10,0,1.2])
    grid on
    subplot(2,1,2); stem(m/500, imag(XO)); title('Imag Part of Odd Sequence');
    xlabel('m in pi units'); ylabel('Imag[XO(m)]'); 
    %axis([-10,10,0,1.2])
    grid on
    
    
    
    % ---------------------------------------------------
    %                   DTFT of Realx(n)
    % ---------------------------------------------------
    
    MM = 500;
    k = [-MM:MM];        % [-pi, pi]
    %k = [0:M];        % [0, pi]
    w = (pi/MM) * k;
    
    [RX] = dtft(real(x), n, w);                            
    
    magRX = abs(RX); angRX = angle(RX); realRX = real(RX); imagRX = imag(RX);
    
    figure('NumberTitle', 'off', 'Name', 'Problem 3.8 RX(w)--DTFT of Realx(n)'); 
    set(gcf,'Color','white');
    subplot(2,1,1); plot(w/pi, magRX); grid on; 
    title('Magnitude Part');
    xlabel('frequency in pi units'); ylabel('Magnitude'); 
    subplot(2,1,2); plot(w/pi, angRX); grid on;
    title('Angle Part');
    xlabel('frequency in pi units'); ylabel('Radians');
    
    figure('NumberTitle', 'off', 'Name', 'Problem 3.8 Real and Imag of RX(w)'); 
    set(gcf,'Color','white');
    subplot('2,1,1'); plot(w/pi, realRX); grid on;
    title('Real Part');
    xlabel('frequency in pi units'); ylabel('Real');
    subplot('2,1,2'); plot(w/pi, imagRX); grid on;
    title('Imaginary Part');
    xlabel('frequency in pi units'); ylabel('Imaginary');
    
    
    % -------------------------------------------------------
    %                      DTFT of Imagx(n)
    % -------------------------------------------------------
    
    MM = 500;
    k = [-MM:MM];        % [-pi, pi]
    %k = [0:M];        % [0, pi]
    w = (pi/MM) * k;
    
    [IX] = dtft(j*imag(x), n, w);                            
    
    magIX = abs(IX); angIX = angle(IX); realIX = real(IX); imagIX = imag(IX);
    
    figure('NumberTitle', 'off', 'Name', 'Problem 3.8 IX(w)--DTFT of Imagx(n)'); 
    set(gcf,'Color','white');
    subplot(2,1,1); plot(w/pi, magIX); grid on; 
    title('Magnitude Part');
    xlabel('frequency in pi units'); ylabel('Magnitude'); 
    subplot(2,1,2); plot(w/pi, angIX); grid on;
    title('Angle Part');
    xlabel('frequency in pi units'); ylabel('Radians');
    
    figure('NumberTitle', 'off', 'Name', 'Problem 3.8 Real and Imag of IX(w)'); 
    set(gcf,'Color','white');
    subplot('2,1,1'); plot(w/pi, realIX); grid on;
    title('Real Part');
    xlabel('frequency in pi units'); ylabel('Real');
    subplot('2,1,2'); plot(w/pi, imagIX); grid on;
    title('Imaginary Part');
    xlabel('frequency in pi units'); ylabel('Imaginary');
    
    
    % ------------------------------------------
    %             Verify
    % ------------------------------------------
    figure('NumberTitle', 'off', 'Name', 'Problem 3.8 RX(w) and RealXE'); 
    set(gcf,'Color','white');
    subplot('2,1,1'); plot(w/pi, realRX); grid on;
    title('Real Part of RX(w)');
    xlabel('frequency in pi units'); ylabel('Real');
    subplot('2,1,2'); plot((m/500), real(XE)); grid on;
    title('Real Part of XE(w)');
    xlabel('frequency in pi units'); ylabel('Real');
    
    
    figure('NumberTitle', 'off', 'Name', 'Problem 3.8 IX(w) and ImagXO'); 
    set(gcf,'Color','white');
    subplot('2,1,1'); plot(w/pi, imagIX); grid on;
    title('Imaginary Part of IX(w)');
    xlabel('frequency in pi units'); ylabel('Imaginary');
    subplot('2,1,2'); plot((m/500), imag(XO)); grid on;
    title('Imaginary Part of XO(w)');
    xlabel('frequency in pi units'); ylabel('Imaginary');
    

      运行结果:

           1、原始序列及其DTFT

            2、序列DTFT进行共轭奇偶对称分解

            3、原始序列实部和虚部的DTFT

            4、对比结果

            序列DTFT的共轭偶对称分量和序列实部的DTFT结果相同;

            序列DTFT的共轭奇对称分量和序列虚部的DTFT结果相同;

    牢记: 1、如果你决定做某事,那就动手去做;不要受任何人、任何事的干扰。2、这个世界并不完美,但依然值得我们去为之奋斗。
  • 相关阅读:
    自已实现的async 只实现了一部分功能
    async包 ES6 async/await的区别
    网络爬虫基本原理——基于python语言
    推荐一本适合初学者全面自学python的书(附赠电子书)
    用python画小猪票佩奇
    用Python全自动下载抖音视频!
    用python操作PDF文件
    Python爬虫抓取收集考试大纲
    京东商城大规模爬虫的开发
    Python爬虫一步步抓取房产信息
  • 原文地址:https://www.cnblogs.com/ky027wh-sx/p/8167275.html
Copyright © 2020-2023  润新知