【 MATLAB 】z 變換中的卷積與解卷積
阿新 • • 發佈:2018-12-17
關於卷積的博文,之前也寫過幾篇:
今天在z變換的應用場景中再寫一篇,另外加上另外一個知識點解卷積deconv。
z變換的卷積性質為:
例題1:
設
求:
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
所以,
[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:
設
求:
直接給出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