1. 程式人生 > >【 MATLAB 】z 變換中的卷積與解卷積

【 MATLAB 】z 變換中的卷積與解卷積

關於卷積的博文,之前也寫過幾篇:

今天在z變換的應用場景中再寫一篇,另外加上另外一個知識點解卷積deconv。

z變換的卷積性質為:

Z[x_1(n)*x_2(n)]= X_1(z)X_2(z);ROC:ROC_{x_1}\cap ROC_{x_2}

例題1:

X_1(z)=2+3z^{-1}+4z^{-2}

X_2(z)=3+4z^{-1}+5z^{-2}+6z^{-3}

求:

X_3(z) = X_1(z)X_2(z)

clc
clear
close all

n1 = 0:2;
x1 = [2,3,4];
n2 = 0:3;
x2 = [3,4,5,6];

n3 = min(n1)+min(n2):max(n1)+max(n2);
x3 = conv(x1,x2)

subplot(3,1,1);
stem(n1,x1);
title('x1(n)');

subplot(3,1,2);
stem(n2,x2);
title('x2(n)');

subplot(3,1,3);
stem(n3,x3);
title('x1(n)*x2(n)');

卷積後的下標也可以表示成:

n3b = n1(1) + n2(1);
n3e = n1(length(x1)) + n2(length(x2));
n3 = n3b:n3e;
% n3 = min(n1)+min(n2):max(n1)+max(n2);
x3 = conv(x1,x2)

x3 =

     6    17    34    43    38    24

所以,

X_3(z)=6 + 17z^{-1}+34z^{-2}+43z^{-3}+38z^{-4}+24z^{-5}

[p,r]=deconv(x3,x1) rlogic = (r == 0) plogic=(p == x2)

繼續執行這三條語句可得:

p =

     3     4     5     6

r =

     0     0     0     0     0     0

rlogic =

  1×6 logical 陣列

   1   1   1   1   1   1

plogic =

  1×4 logical 陣列

   1   1   1   1 可見p = x2,這就是解卷積,也就是 p = x3 / x1 = x2;

例題2:

X_1(z)=z +2 + 3z^{-1}

X_2(z) = 2z^2+4z+3+5z^{-1}

求:

X_3(z)=X_1(z)X_2(z)

直接給出MATLAB指令碼:

clc
clear
close all

n1 = -1:1;
x1 = [1,2,3];
n2 = -2:1;
x2 = [2,4,3,5];

n3b = n1(1) + n2(1);
n3e = n1(length(x1)) + n2(length(x2));
n3 = n3b:n3e
% n3 = min(n1)+min(n2):max(n1)+max(n2);
x3 = conv(x1,x2)

subplot(3,1,1);
stem(n1,x1);
title('x1(n)');

subplot(3,1,2);
stem(n2,x2);
title('x2(n)');

subplot(3,1,3);
stem(n3,x3);
title('x1(n)*x2(n)');

[x2,r]=deconv(x3,x1)

n3 =

    -3    -2    -1     0     1     2

x3 =

     2     8    17    23    19    15

x2 =

     2     4     3     5

r =

     0     0     0     0     0     0