用到了三角窗脉冲序列,各小题的DTFT就不写公式了,直接画图(这里只贴长度M=10的情况)。

1、 代码:

%% ------------------------------------------------------------------------
%% Output Info about this m-file
fprintf('\n***********************************************************\n');
fprintf(' <DSP using MATLAB> Problem 3.10 \n\n'); banner();
%% ------------------------------------------------------------------------ % --------------------------------------------------------------
% Triangular Window sequence, and its DTFT
% --------------------------------------------------------------
M = 10;
%M = 15;
%M = 25;
%M = 100; n1_start = 0; n1_end = M;
n1 = [n1_start : n1_end - 1]; x1 = (1 - abs(M-1-2*n1)/(M-1)) .* ones(1, length(n1)); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10 x1(n) Triangular, M = %d',M));
set(gcf,'Color','white');
stem(n1, x1);
xlabel('n'); ylabel('x1');
title(sprintf('x1(n)=Tm(n) sequence, M = %d', M)); grid on; MM = 500;
k = [-MM:MM]; % [-pi, pi]
%k = [0:M]; % [0, pi]
w = (pi/MM) * k; [X1] = dtft(x1, n1, w); magX1 = abs(X1); angX1 = angle(X1); realX1 = real(X1); imagX1 = imag(X1); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10 DTFT of Tm(n), M = %d', M));
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'); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10 Real and Imag of X1(w), M = %d', M));
set(gcf,'Color','white');
subplot('2,1,1'); plot(w/pi, realX1); grid on;
title('Real Part of X1(w)');
xlabel('frequency in \pi units'); ylabel('Real');
subplot('2,1,2'); plot(w/pi, imagX1); grid on;
title('Imaginary Part of X1(w)');
xlabel('frequency in \pi units'); ylabel('Imaginary'); [X1_f, w_f] = sigfold(X1, w);
magX1f = abs(X1_f); angX1f = angle(X1_f); realX1f = real(X1_f); imagX1f = imag(X1_f); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10 X1(-w), M = %d', M));
set(gcf,'Color','white');
subplot(2,1,1); plot(w_f/pi, magX1f); grid on;
title('Magnitude Part');
xlabel('frequency in \pi units'); ylabel('Magnitude');
subplot(2,1,2); plot(w_f/pi, angX1f); grid on;
title('Angle Part');
xlabel('frequency in \pi units'); ylabel('Radians'); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10 Real and Imag of X1(-w), M = %d', M));
set(gcf,'Color','white');
subplot('2,1,1'); plot(w_f/pi, realX1f); grid on;
title('Real Part of X1(-w)');
xlabel('frequency in \pi units'); ylabel('Real');
subplot('2,1,2'); plot(w_f/pi, imagX1f); grid on;
title('Imaginary Part of X1(-w)');
xlabel('frequency in \pi units'); ylabel('Imaginary'); %% ----------------------------------------------------------------
%% x2(n)=Tm(-n), and its DTFT
%% ----------------------------------------------------------------
[x2, n2] = sigfold(x1, n1); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10 x2(n), M = %d', M));
set(gcf,'Color','white');
stem(n2, x2);
xlabel('n2'); ylabel('x2');
title(sprintf('x2(n)=Tm(-n) sequence, M = %d', M)); grid on; MM = 500;
k = [-MM:MM]; % [-pi, pi]
%k = [0:M]; % [0, pi]
w = (pi/MM) * k; [X2] = dtft(x2, n2, w); magX2 = abs(X2); angX2 = angle(X2); realX2 = real(X2); imagX2 = imag(X2); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10 DTFT of x2(n), M = %d', M));
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'); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10 Real and Imag of X2(w), M = %d', M));
set(gcf,'Color','white');
subplot(2,1,1); plot(w/pi, realX2); grid on;
title('Real Part of X2(w)');
xlabel('frequency in \pi units'); ylabel('Real');
subplot(2,1,2); plot(w/pi, imagX2); grid on;
title('Imaginary Part of X2(w)');
xlabel('frequency in \pi units'); ylabel('Imaginary');

  序列并进行反转得到所需题中的序列:

各自DTFT的幅度谱和相位谱(幅度谱相同,相位谱反相位):

DTFT的实部和虚部:

谱进行折叠;

2、从第2小题到第5,序列都是由两个子序列运算而得到,以下命名都是按照第1个子序列x1(n),第2个子序列x2(n),

运算得到题目中目的序列x3(n)。

代码:

%% ------------------------------------------------------------------------
%% Output Info about this m-file
fprintf('\n***********************************************************\n');
fprintf(' <DSP using MATLAB> Problem 3.10 \n\n'); banner();
%% ------------------------------------------------------------------------ % ------------------------------------------------------------------
% Triangular Window sequence, and its DTFT
% ------------------------------------------------------------------
M = 10;
%M = 15;
%M = 25;
%M = 100; n1_start = 0; n1_end = M;
n1 = [n1_start : n1_end - 1]; x1 = (1 - abs(M-1-2*n1)/(M-1)) .* ones(1, length(n1)); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.2 x1(n) Triangular, M = %d',M));
set(gcf,'Color','white');
stem(n1, x1);
xlabel('n'); ylabel('x1');
title(sprintf('x1(n)=Tm(n) sequence, M = %d', M)); grid on; MM = 500;
k = [-MM:MM]; % [-pi, pi]
%k = [0:M]; % [0, pi]
w = (pi/MM) * k; [X1] = dtft(x1, n1, w); magX1 = abs(X1); angX1 = angle(X1); realX1 = real(X1); imagX1 = imag(X1); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.2 DTFT of Tm(n), M = %d', M));
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'); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.2 Real and Imag of X1(w), M = %d', M));
set(gcf,'Color','white');
subplot('2,1,1'); plot(w/pi, realX1); grid on;
title('Real Part of X1(w)');
xlabel('frequency in \pi units'); ylabel('Real');
subplot('2,1,2'); plot(w/pi, imagX1); grid on;
title('Imaginary Part of X1(w)');
xlabel('frequency in \pi units'); ylabel('Imaginary'); %% -----------------------------------------------------------
%% Tm(n-10) and its DTFT
%% -----------------------------------------------------------
[x2, n2] = sigshift(x1, n1, 10); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.2 x2(n)=Tm(n-10), M = %d',M));
set(gcf,'Color','white');
stem(n2, x2);
xlabel('n'); ylabel('x2');
title(sprintf('x2(n)=Tm(n-10), M = %d', M)); grid on; MM = 500;
k = [-MM:MM]; % [-pi, pi]
%k = [0:M]; % [0, pi]
w = (pi/MM) * k; [X2] = dtft(x2, n2, w); magX2 = abs(X2); angX2 = angle(X2); realX2 = real(X2); imagX2 = imag(X2); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.2 DTFT of Tm(n-10), M = %d', M));
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'); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.2 Real and Imag of X2(w), M = %d', M));
set(gcf,'Color','white');
subplot(2,1,1); plot(w/pi, realX2); grid on;
title('Real Part of X2(w)');
xlabel('frequency in \pi units'); ylabel('Real');
subplot(2,1,2); plot(w/pi, imagX2); grid on;
title('Imaginary Part of X2(w)');
xlabel('frequency in \pi units'); ylabel('Imaginary'); %% -------------------------------------------------------------
%% Tm(n)-Tm(n-10) and its DTFT
%% -------------------------------------------------------------
[x3, n3] = sigadd(x1, n1, -x2, n2); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.2 x3(n)=Tm(n)-Tm(n-10), M = %d',M));
set(gcf,'Color','white');
stem(n3, x3);
xlabel('n'); ylabel('x3');
title(sprintf('x3(n)=Tm(n)-Tm(n-10), M = %d', M)); grid on; MM = 500;
k = [-MM:MM]; % [-pi, pi]
%k = [0:M]; % [0, pi]
w = (pi/MM) * k; [X3] = dtft(x3, n3, w); magX3 = abs(X3); angX3 = angle(X3); realX3 = real(X3); imagX3 = imag(X3); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.2 DTFT of x3(n)=Tm(n)-Tm(n-10), M = %d', M));
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'); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.2 Real and Imag of X3(w), M = %d', M));
set(gcf,'Color','white');
subplot('2,1,1'); plot(w/pi, realX3); grid on;
title('Real Part of X3(w)');
xlabel('frequency in \pi units'); ylabel('Real');
subplot('2,1,2'); plot(w/pi, imagX3); grid on;
title('Imaginary Part of X3(w)');
xlabel('frequency in \pi units'); ylabel('Imaginary'); %% ------------------------------------------------------
%% Properties of DTFT
%% ------------------------------------------------------
X3_check = X1 - X1 .* exp(-j * w * 10); magX3C = abs(X3_check); angX3C = angle(X3_check); realX3C = real(X3_check); imagX3C = imag(X3_check); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.2 DTFT[Tm(n)]-DTFT[Tm(n-10)], M = %d', M));
set(gcf,'Color','white');
subplot(2,1,1); plot(w/pi, magX3C); grid on;
title('Magnitude Part');
xlabel('frequency in \pi units'); ylabel('Magnitude');
subplot(2,1,2); plot(w/pi, angX3C); grid on;
title('Angle Part');
xlabel('frequency in \pi units'); ylabel('Radians'); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.2 Real and Imag of X3C(w), M = %d', M));
set(gcf,'Color','white');
subplot('2,1,1'); plot(w/pi, realX3C); grid on;
title('Real Part of X3_check(w)');
xlabel('frequency in \pi units'); ylabel('Real');
subplot('2,1,2'); plot(w/pi, imagX3C); grid on;
title('Imaginary Part of X3_check(w)');
xlabel('frequency in \pi units'); ylabel('Imaginary');

  运行结果:

3、代码

%% ------------------------------------------------------------------------
%% Output Info about this m-file
fprintf('\n***********************************************************\n');
fprintf(' <DSP using MATLAB> Problem 3.10 \n\n'); banner();
%% ------------------------------------------------------------------------ % ------------------------------------------------------------------
% Triangular Window sequence, and its DTFT
% ------------------------------------------------------------------
M = 10;
%M = 15;
%M = 25;
%M = 100; n1_start = 0; n1_end = M;
n1 = [n1_start : n1_end - 1]; x1 = (1 - abs(M-1-2*n1)/(M-1)) .* ones(1, length(n1)); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.3 x1(n) Triangular, M = %d',M));
set(gcf,'Color','white');
stem(n1, x1);
xlabel('n'); ylabel('x1');
title(sprintf('x1(n)=Tm(n) sequence, M = %d', M)); grid on; MM = 500;
k = [-MM:MM]; % [-pi, pi]
%k = [0:M]; % [0, pi]
w = (pi/MM) * k; [X1] = dtft(x1, n1, w); magX1 = abs(X1); angX1 = angle(X1); realX1 = real(X1); imagX1 = imag(X1); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.3 DTFT of Tm(n), M = %d', M));
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'); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.3 Real and Imag of X1(w), M = %d', M));
set(gcf,'Color','white');
subplot('2,1,1'); plot(w/pi, realX1); grid on;
title('Real Part of X1(w)');
xlabel('frequency in \pi units'); ylabel('Real');
subplot('2,1,2'); plot(w/pi, imagX1); grid on;
title('Imaginary Part of X1(w)');
xlabel('frequency in \pi units'); ylabel('Imaginary'); %% ---------------------------------------------------------------
%% Tm(-n) and its DTFT
%% ---------------------------------------------------------------
[x2, n2] = sigfold(x1, n1); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.3 x2(n)=Tm(-n), M = %d',M));
set(gcf,'Color','white');
stem(n2, x2);
xlabel('n'); ylabel('x2');
title(sprintf('x2(n)=Tm(-n), M = %d', M)); grid on; MM = 500;
k = [-MM:MM]; % [-pi, pi]
%k = [0:M]; % [0, pi]
w = (pi/MM) * k; [X2] = dtft(x2, n2, w); magX2 = abs(X2); angX2 = angle(X2); realX2 = real(X2); imagX2 = imag(X2); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.3 DTFT of Tm(-n), M = %d', M));
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'); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.3 Real and Imag of X2(w)=X1(-w), M = %d', M));
set(gcf,'Color','white');
subplot(2,1,1); plot(w/pi, realX2); grid on;
title('Real Part of X2(w)');
xlabel('frequency in \pi units'); ylabel('Real');
subplot(2,1,2); plot(w/pi, imagX2); grid on;
title('Imaginary Part of X2(w)');
xlabel('frequency in \pi units'); ylabel('Imaginary'); %% -----------------------------------------------------------------
%% Tm(n)*Tm(-n) and its DTFT
%% -----------------------------------------------------------------
[x3, n3] = conv_m(x1, n1, x2, n2); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.3 x3(n)=Tm(n)*Tm(-n), M = %d',M));
set(gcf,'Color','white');
stem(n3, x3);
xlabel('n'); ylabel('x3');
title(sprintf('x3(n)=Tm(n)*Tm(-n), M = %d', M)); grid on; MM = 500;
k = [-MM:MM]; % [-pi, pi]
%k = [0:M]; % [0, pi]
w = (pi/MM) * k; [X3] = dtft(x3, n3, w); magX3 = abs(X3); angX3 = angle(X3); realX3 = real(X3); imagX3 = imag(X3); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.3 DTFT of x3(n)=Tm(n)*Tm(-n), M = %d', M));
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'); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.3 Real and Imag of X3(w), M = %d', M));
set(gcf,'Color','white');
subplot('2,1,1'); plot(w/pi, realX3); grid on;
title('Real Part of X3(w)');
xlabel('frequency in \pi units'); ylabel('Real');
subplot('2,1,2'); plot(w/pi, imagX3); grid on;
title('Imaginary Part of X3(w)');
xlabel('frequency in \pi units'); ylabel('Imaginary'); %% ------------------------------------------------------
%% Properties of DTFT
%% ------------------------------------------------------
%[X3_check, m] = sigmult(X1, w/pi*500, X2, w/pi*500);
X3_check = X1 .* X2; magX3C = abs(X3_check); angX3C = angle(X3_check); realX3C = real(X3_check); imagX3C = imag(X3_check); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.3 DTFT[Tm(n)]XDTFT[Tm(-n)], M = %d', M));
set(gcf,'Color','white');
subplot(2,1,1); plot(w/pi, magX3C); grid on;
title('Magnitude Part');
xlabel('frequency in \pi units'); ylabel('Magnitude');
subplot(2,1,2); plot(w/pi, angX3C); grid on;
title('Angle Part');
xlabel('frequency in \pi units'); ylabel('Radians'); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.3 Real and Imag of X3C(w), M = %d', M));
set(gcf,'Color','white');
subplot('2,1,1'); plot(w/pi, realX3C); grid on;
title('Real Part of X3 check(w)');
xlabel('frequency in \pi units'); ylabel('Real');
subplot('2,1,2'); plot(w/pi, imagX3C); grid on;
title('Imaginary Part of X3 check(w)');
xlabel('frequency in \pi units'); ylabel('Imaginary');

  运行结果:

卷积后求DTFT,其实部和虚部:

先求各自DTFT再相乘,虚部稍有不同;

4、代码:

%% ------------------------------------------------------------------------
%% Output Info about this m-file
fprintf('\n***********************************************************\n');
fprintf(' <DSP using MATLAB> Problem 3.10 \n\n'); banner();
%% ------------------------------------------------------------------------ % ------------------------------------------------------------------
% Triangular Window sequence, and its DTFT
% ------------------------------------------------------------------
M = 10;
%M = 15;
%M = 25;
%M = 100; n1_start = 0; n1_end = M;
n1 = [n1_start : n1_end - 1]; x1 = (1 - abs(M-1-2*n1)/(M-1)) .* ones(1, length(n1)); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.4 x1(n) Triangular, M = %d',M));
set(gcf,'Color','white');
stem(n1, x1);
xlabel('n'); ylabel('x1');
title(sprintf('x1(n)=Tm(n) sequence, M = %d', M)); grid on; MM = 500;
k = [-MM:MM]; % [-pi, pi]
%k = [0:M]; % [0, pi]
w = (pi/MM) * k; [X1] = dtft(x1, n1, w); magX1 = abs(X1); angX1 = angle(X1); realX1 = real(X1); imagX1 = imag(X1); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.4 DTFT of Tm(n), M = %d', M));
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'); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.4 Real and Imag of X1(w), M = %d', M));
set(gcf,'Color','white');
subplot('2,1,1'); plot(w/pi, realX1); grid on;
title('Real Part of X1(w)');
xlabel('frequency in \pi units'); ylabel('Real');
subplot('2,1,2'); plot(w/pi, imagX1); grid on;
title('Imaginary Part of X1(w)');
xlabel('frequency in \pi units'); ylabel('Imaginary'); %% ---------------------------------------------------------------
%% exp(jπn) and its DTFT
%% ---------------------------------------------------------------
n2 = n1;
x2 = exp(j*pi*n2); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.4 x2(n)=exp(j%\pin), M = %d',M));
set(gcf,'Color','white');
subplot(2,1,1); stem(n2, real(x2));
xlabel('n'); ylabel('x2');
title(sprintf('Real part x2(n)=exp(j\\pin), M = %d', M)); grid on;
subplot(2,1,2); stem(n2, imag(x2));
xlabel('n'); ylabel('x2');
title(sprintf('Imaginary part x2(n)=exp(j\\pin), M = %d', M)); grid on; MM = 500;
k = [-MM:MM]; % [-pi, pi]
%k = [0:M]; % [0, pi]
w = (pi/MM) * k; [X2] = dtft(x2, n2, w); magX2 = abs(X2); angX2 = angle(X2); realX2 = real(X2); imagX2 = imag(X2); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.4 DTFT of exp(j\\pin), M = %d', M));
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'); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.4 Real and Imag of X2(w), M = %d', M));
set(gcf,'Color','white');
subplot(2,1,1); plot(w/pi, realX2); grid on;
title('Real Part of X2(w)');
xlabel('frequency in \pi units'); ylabel('Real');
subplot(2,1,2); plot(w/pi, imagX2); grid on;
title('Imaginary Part of X2(w)');
xlabel('frequency in \pi units'); ylabel('Imaginary'); %% -----------------------------------------------------------------
%% Tm(n)*exp(jπn) and its DTFT
%% -----------------------------------------------------------------
[x3, n3] = sigmult(x1, n1, x2, n2); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.4 x3(n)=Tm(n)exp(j\\pin), M = %d',M));
set(gcf,'Color','white');
subplot(2,1,1); stem(n3, real(x3));
xlabel('n'); ylabel('x3');
title(sprintf('Real part x3(n)=Tm(n)exp(j\\pin), M = %d', M)); grid on;
subplot(2,1,2); stem(n3, imag(x3));
xlabel('n'); ylabel('x3');
title(sprintf('Imaginary part x3(n)=Tm(n)exp(j\\pin), M = %d', M)); grid on; MM = 500;
k = [-MM:MM]; % [-pi, pi]
%k = [0:M]; % [0, pi]
w = (pi/MM) * k; [X3] = dtft(x3, n3, w); magX3 = abs(X3); angX3 = angle(X3); realX3 = real(X3); imagX3 = imag(X3); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.4 DTFT of x3(n)=Tm(n)exp(j\\pin), M = %d', M));
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'); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.4 Real and Imag of X3(w), M = %d', M));
set(gcf,'Color','white');
subplot('2,1,1'); plot(w/pi, realX3); grid on;
title('Real Part of X3(w)');
xlabel('frequency in \pi units'); ylabel('Real');
subplot('2,1,2'); plot(w/pi, imagX3); grid on;
title('Imaginary Part of X3(w)');
xlabel('frequency in \pi units'); ylabel('Imaginary'); %% ------------------------------------------------------
%% Properties of DTFT
%% ------------------------------------------------------ [X3_check, n3_check] = sigshift(X1, w/pi*500, pi/pi); magX3C = abs(X3_check); angX3C = angle(X3_check); realX3C = real(X3_check); imagX3C = imag(X3_check); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.4 X3C=X1(w-\\pi), M = %d', M));
set(gcf,'Color','white');
%subplot(2,1,1); plot(w/pi, magX3C);
subplot(2,1,1); plot(n3_check/500*pi, magX3C);
title('Magnitude Part');
xlabel('frequency in \pi units'); ylabel('Magnitude'); grid on;
axis([-1,1,-1,6]);
%subplot(2,1,2); plot(w/pi, angX3C);
subplot(2,1,2); plot(n3_check/500*pi, angX3C);
title('Angle Part');
xlabel('frequency in \pi units'); ylabel('Radians'); grid on;
axis([-1,1,-8,8]); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.4 Real and Imag of X3C(w), M = %d', M));
set(gcf,'Color','white');
%subplot('2,1,1'); plot(w/pi, realX3C); grid on;
subplot('2,1,1'); plot(n3_check/500*pi, realX3C); grid on;
title('Real Part of X3 check(w)');
xlabel('frequency in \pi units'); ylabel('Real');
axis([-1,1,-4,6]);
%subplot('2,1,2'); plot(w/pi, imagX3C); grid on;
subplot('2,1,2'); plot(n3_check/500*pi, imagX3C); grid on;
title('Imaginary Part of X3 check(w)');
xlabel('frequency in \pi units'); ylabel('Imaginary');

  运行结果:

三角窗序列乘以复指数序列,相当于谱频移了(这里是π):

5、代码:

%% ------------------------------------------------------------------------
%% Output Info about this m-file
fprintf('\n***********************************************************\n');
fprintf(' <DSP using MATLAB> Problem 3.10 \n\n'); banner();
%% ------------------------------------------------------------------------ % ------------------------------------------------------------------
% Triangular Window sequence, and its DTFT
% ------------------------------------------------------------------
M = 10;
%M = 15;
%M = 25;
%M = 100; n1_start = 0; n1_end = M;
n1 = [n1_start : n1_end - 1]; x1 = (1 - abs(M-1-2*n1)/(M-1)) .* ones(1, length(n1)); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.5 x1(n) Triangular, M = %d',M));
set(gcf,'Color','white');
stem(n1, x1);
xlabel('n'); ylabel('x1');
title(sprintf('x1(n)=Tm(n) sequence, M = %d', M)); grid on; MM = 500;
k = [-MM:MM]; % [-pi, pi]
%k = [0:M]; % [0, pi]
w = (pi/MM) * k; [X1] = dtft(x1, n1, w); magX1 = abs(X1); angX1 = angle(X1); realX1 = real(X1); imagX1 = imag(X1); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.5 DTFT of Tm(n), M = %d', M));
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'); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.5 Real and Imag of X1(w), M = %d', M));
set(gcf,'Color','white');
subplot('2,1,1'); plot(w/pi, realX1); grid on;
title('Real Part of X1(w)');
xlabel('frequency in \pi units'); ylabel('Real');
subplot('2,1,2'); plot(w/pi, imagX1); grid on;
title('Imaginary Part of X1(w)');
xlabel('frequency in \pi units'); ylabel('Imaginary'); %% ---------------------------------------------------------------
%% cos(0.1πn) and its DTFT
%% ---------------------------------------------------------------
n2 = n1;
x2 = cos(0.1*pi*n2); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.5 x2(n)=cos(0.1pin), M = %d',M));
set(gcf,'Color','white');
stem(n2, x2);
xlabel('n'); ylabel('x2');
title(sprintf('x2(n)=cos(0.1pin), M = %d', M)); grid on; MM = 500;
k = [-MM:MM]; % [-pi, pi]
%k = [0:M]; % [0, pi]
w = (pi/MM) * k; [X2] = dtft(x2, n2, w); magX2 = abs(X2); angX2 = angle(X2); realX2 = real(X2); imagX2 = imag(X2); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.5 DTFT of cos(0.1pin), M = %d', M));
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'); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.5 Real and Imag of X2(w), M = %d', M));
set(gcf,'Color','white');
subplot(2,1,1); plot(w/pi, realX2); grid on;
title('Real Part of X2(w)');
xlabel('frequency in \pi units'); ylabel('Real');
subplot(2,1,2); plot(w/pi, imagX2); grid on;
title('Imaginary Part of X2(w)');
xlabel('frequency in \pi units'); ylabel('Imaginary'); %% -----------------------------------------------------------------
%% Tm(n)*cos(0.1πn) and its DTFT
%% -----------------------------------------------------------------
[x3, n3] = sigmult(x1, n1, x2, n2);
%x3 = x1 .* x2; figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.5 x3(n)=Tm(n)cos(0.1pin), M = %d',M));
set(gcf,'Color','white');
subplot(2,1,1); stem(n3, real(x3));
xlabel('n'); ylabel('x3');
title(sprintf('Real part x3(n)=Tm(n)cos(0.1pin), M = %d', M)); grid on;
subplot(2,1,2); stem(n3, imag(x3));
xlabel('n'); ylabel('x3');
title(sprintf('Imaginary part x3(n)=Tm(n)cos(0.1pin), M = %d', M)); grid on; MM = 500;
k = [-MM:MM]; % [-pi, pi]
%k = [0:M]; % [0, pi]
w = (pi/MM) * k; [X3] = dtft(x3, n3, w); magX3 = abs(X3); angX3 = angle(X3); realX3 = real(X3); imagX3 = imag(X3); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.5 DTFT of x3(n)=Tm(n)cos(0.1pin), M = %d', M));
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'); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.5 Real and Imag of X3(w), M = %d', M));
set(gcf,'Color','white');
subplot('2,1,1'); plot(w/pi, realX3); grid on;
title('Real Part of X3(w)');
xlabel('frequency in \pi units'); ylabel('Real');
subplot('2,1,2'); plot(w/pi, imagX3); grid on;
title('Imaginary Part of X3(w)');
xlabel('frequency in \pi units'); ylabel('Imaginary'); %% ------------------------------------------------------
%% Properties of DTFT
%% ------------------------------------------------------ [X3_check, n3_check] = sigshift(X1, w/pi*500, pi/pi); magX3C = abs(X3_check); angX3C = angle(X3_check); realX3C = real(X3_check); imagX3C = imag(X3_check); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.4 X3C=X1(w-\\pi), M = %d', M));
set(gcf,'Color','white');
%subplot(2,1,1); plot(w/pi, magX3C);
subplot(2,1,1); plot(n3_check/500*pi, magX3C);
title('Magnitude Part');
xlabel('frequency in \pi units'); ylabel('Magnitude'); grid on;
axis([-1,1,-1,6]);
%subplot(2,1,2); plot(w/pi, angX3C);
subplot(2,1,2); plot(n3_check/500*pi, angX3C);
title('Angle Part');
xlabel('frequency in \pi units'); ylabel('Radians'); grid on;
axis([-1,1,-8,8]); figure('NumberTitle', 'off', 'Name', sprintf('Problem 3.10.4 Real and Imag of X3C(w), M = %d', M));
set(gcf,'Color','white');
%subplot('2,1,1'); plot(w/pi, realX3C); grid on;
subplot('2,1,1'); plot(n3_check/500*pi, realX3C); grid on;
title('Real Part of X3 check(w)');
xlabel('frequency in \pi units'); ylabel('Real');
axis([-1,1,-4,6]);
%subplot('2,1,2'); plot(w/pi, imagX3C); grid on;
subplot('2,1,2'); plot(n3_check/500*pi, imagX3C); grid on;
title('Imaginary Part of X3 check(w)');
xlabel('frequency in \pi units'); ylabel('Imaginary');

  运行结果:

序列与余弦函数cos(ω0n)相乘,相当于原序列的频谱频移了ω0=0.1π个单位:

《DSP using MATLAB》Problem 3.10的更多相关文章

  1. 《DSP using MATLAB》Problem 7.10

    代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...

  2. 《DSP using MATLAB》Problem 6.10

    代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...

  3. 《DSP using MATLAB》Problem 5.10

    代码: 第1小题: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Out ...

  4. 《DSP using MATLAB》Problem 4.10

    今天擦完了玻璃,尽管有地方不那么明亮干净,冷风中瑟瑟发抖,年也快临近了. 代码是从网上找的, function [p, np, r, nr] = deconv_m(b, nb, a, na) % Mo ...

  5. 《DSP using MATLAB》Problem 2.10

    代码: %% ------------------------------------------------------------------------ %% Output Info about ...

  6. 《DSP using MATLAB》Problem 8.10

    代码: %% ------------------------------------------------------------------------ %% Output Info about ...

  7. 《DSP using MATLAB》Problem 7.27

    代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...

  8. 《DSP using MATLAB》Problem 7.26

    注意:高通的线性相位FIR滤波器,不能是第2类,所以其长度必须为奇数.这里取M=31,过渡带里采样值抄书上的. 代码: %% +++++++++++++++++++++++++++++++++++++ ...

  9. 《DSP using MATLAB》Problem 7.25

    代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...

随机推荐

  1. 查找并替换字符串 Find And Replace in String

    2018-07-29 17:08:15 问题描述: 问题求解: 字符串替换的问题有个技巧就是从右向左进行替换,这样的话,左边的index就不需要考虑变动了. public String findRep ...

  2. PHP自带调试函数

    1.var_dump:打印变量的相关信息 $a = array(1, 2, array("a", "b", "c")); var_dump( ...

  3. Jaccard similarity(杰卡德相似度)和Abundance correlation(丰度相关性)

    杰卡德距离(Jaccard Distance) 是用来衡量两个集合差异性的一种指标,它是杰卡德相似系数的补集,被定义为1减去Jaccard相似系数.而杰卡德相似系数(Jaccard similarit ...

  4. java concurrent包的实现原理

      由于java的CAS同时具有 volatile 读和volatile写的内存语义,因此Java线程之间的通信现在有了下面四种方式:   A线程写volatile变量,随后B线程读这个volatil ...

  5. 12月7日,几个错误,拼写错误,遗漏符号:,记忆有误,max-width的作用。gem mini_magick, simple_form

    ❌: 1. /Users/chentianwei/jdstore3/jdstore/config/routes.rb:6:in `block in <top (required)>': u ...

  6. android------锁屏(手机启动出现锁屏界面)

    以前用过一个红包锁屏的软件,第一次打开手机出现锁屏,滑动领取收益,当时觉得这功能不错,就查阅资料,写了一个案例, apk运行流程: 进入软件--->启动服务--->关闭手机(可先退出应用) ...

  7. Nastya Is Buying Lunch CodeForces - 1136D (排列)

    大意: 给定n排列, m个pair, 每个pair(u,v), 若u,v相邻, 且u在v左侧, 则可以交换u和v, 求a[n]最多向左移动多少 经过观察可以发现, 尽量先用右侧的人与a[n]交换, 这 ...

  8. hdu1238 kmp

    You are given a number of case-sensitive strings of alphabetic characters, find the largest string X ...

  9. 【转】C# 生成二维码并且在中间加Logo(图片合并)

    public class QRCodeHelper { public static Bitmap GetThumbnail(Bitmap b, int destHeight, int destWidt ...

  10. Jpa实体类生成图解

    Jpa实体类生成图解   创建连接     创建项目