zoukankan      html  css  js  c++  java
  • 《DSP using MATLAB》Problem 3.2

    1、用x1序列的DTFT来表示x2序列的DTFT

    2、代码:

    %% ------------------------------------------------------------------------
    %%            Output Info about this m-file
    fprintf('
    ***********************************************************
    ');
    fprintf('        <DSP using MATLAB> Problem 3.2 
    
    ');
    
    banner();
    %% ------------------------------------------------------------------------
    
    
    % ----------------------------------
    %            x1(n)
    % ----------------------------------
    n1_start = 0; n1_end = 3;
    n1 = [n1_start : n1_end]; 
    
    x1 = [1, 2, 2, 1]; 
    
    figure('NumberTitle', 'off', 'Name', 'Problem 3.2 x1(n)');
    set(gcf,'Color','white'); 
    stem(n1, x1); 
    xlabel('n'); ylabel('x1');  
    title('x1(n) sequence'); grid on;
    
    M = 500;
    k = [-M:M];        % [-pi, pi]
    %k = [0:M];        % [0, pi]
    w = (pi/M) * k;
    
    [X1] = dtft(x1, n1, w);                            
    
    magX1 = abs(X1); angX1 = angle(X1); realX1 = real(X1); imagX1 = imag(X1);
    
    figure('NumberTitle', 'off', 'Name', 'Problem 3.2 DTFT of x1(n)');; 
    set(gcf,'Color','white');
    subplot(2,1,1); plot(w/pi, magX1); grid on; 
    title('Magnitude Part');
    xlabel('frequency in pi units'); ylabel('Magnitude'); 
    subplot(2,1,2); plot(w/pi, angX1); grid on;
    title('Angle Part');
    xlabel('frequency in pi units'); ylabel('Radians');
    
    
    X1_chk = (1+exp(-j*w*4)) .* X1;
    magX1_chk = abs(X1_chk); angX1_chk = angle(X1_chk); realX1_chk = real(X1_chk); imagX1_chk = imag(X1_chk);
    
    figure('NumberTitle', 'off', 'Name', 'Problem 3.2 X2(w) obtained by formular with X1(w)');; 
    set(gcf,'Color','white');
    subplot(2,1,1); plot(w/pi, magX1_chk); grid on; 
    title('Magnitude Part');
    xlabel('frequency in pi units'); ylabel('Magnitude'); 
    subplot(2,1,2); plot(w/pi, angX1_chk); grid on;
    title('Angle Part');
    xlabel('frequency in pi units'); ylabel('Radians');
    
    
    % -------------------------------------
    %            x2(n)
    % -------------------------------------
    [x2, n2] = sigshift(x1, n1, 4);
    
    
    figure('NumberTitle', 'off', 'Name', 'Problem 3.2 x2(n)');
    set(gcf,'Color','white'); 
    stem(n2, x2); 
    xlabel('n'); ylabel('x2');  
    title('x2(n) sequence'); grid on;
    
    
    M = 500;
    k = [-M:M];        % [-pi, pi]
    %k = [0:M];        % [0, pi]
    w = (pi/M) * k;
    
    [X2] = dtft(x2, n2, w);                            
    
    magX2 = abs(X2); angX2 = angle(X2); realX2 = real(X2); imagX2 = imag(X2);
    
    figure('NumberTitle', 'off', 'Name', 'Problem 3.2 DTFT of x2(n)');; 
    set(gcf,'Color','white');
    subplot(2,1,1); plot(w/pi, magX2); grid on; 
    title('Magnitude Part');
    xlabel('frequency in pi units'); ylabel('Magnitude'); 
    subplot(2,1,2); plot(w/pi, angX2); grid on;
    title('Angle Part');
    xlabel('frequency in pi units'); ylabel('Radians');
    
    
    % -------------------------------------
    %            x3(n)
    % -------------------------------------
    [x3, n3] = sigadd(x1, n1, x2, n2);
    
    
    figure('NumberTitle', 'off', 'Name', 'Problem 3.2 x3(n)');
    set(gcf,'Color','white'); 
    stem(n3, x3); 
    xlabel('n'); ylabel('x3');  
    title('x3(n) sequence'); grid on;
    
    
    M = 500;
    k = [-M:M];        % [-pi, pi]
    %k = [0:M];        % [0, pi]
    w = (pi/M) * k;
    
    [X3] = dtft(x3, n3, w);                            
    
    magX3 = abs(X3); angX3 = angle(X3); realX3 = real(X3); imagX3 = imag(X3);
    
    figure('NumberTitle', 'off', 'Name', 'Problem 3.2 DTFT of x3(n)');; 
    set(gcf,'Color','white');
    subplot(2,1,1); plot(w/pi, magX3); grid on; 
    title('Magnitude Part');
    xlabel('frequency in pi units'); ylabel('Magnitude'); 
    subplot(2,1,2); plot(w/pi, angX3); grid on;
    title('Angle Part');
    xlabel('frequency in pi units'); ylabel('Radians');
    

      运行结果:

            通过第1小题得到的公式计算x2序列的谱,如下:

            可看出,第1小题公式计算的结果,和直接将序列通过DTFT定义得到结果是相同的。

    牢记: 1、如果你决定做某事,那就动手去做;不要受任何人、任何事的干扰。2、这个世界并不完美,但依然值得我们去为之奋斗。
  • 相关阅读:
    ES6 新属性 Symbol
    box-shadow 属性详解
    在vue 中 使用 tinymce编辑器
    var let const 结合作用域 的探讨
    防抖和节流在vue中的应用
    分享几个按钮样式
    队列学习
    栈的学习
    Object—常用的遍历
    从零认识Java Package
  • 原文地址:https://www.cnblogs.com/ky027wh-sx/p/8047567.html
Copyright © 2011-2022 走看看