符号Z变换与Kronecker Delta

时间:2017-03-23 17:41:13

标签: matlab transform signal-processing symbolic-math

我正在尝试使用以下代码生成使用kroneckerDelta的函数。我尝试了许多方法来绘制三角洲,但没有任何工作。在绘图之前,我尝试了fplot并将S变量转换为double。但实际上没有任何效果。

close all;clear all;clc; %#ok<*CLSCR>
syms y(n) x(n) H(Z) z
H(Z) = 5*x + 2*x*z^-2 + 3*x*z^-1;
h(n) = iztrans(H(Z), z, n)
S = subs(h(n), {x}, {1})

输出结果为:

h(n) = 5*x(n)*kroneckerDelta(n, 0) + 3*x(n)*kroneckerDelta(n - 1, 0) + 2*x(n)*kroneckerDelta(n - 2, 0)


S = 3*kroneckerDelta(n - 1, 0) + 2*kroneckerDelta(n - 2, 0) + 5*kroneckerDelta(n, 0)

1 个答案:

答案 0 :(得分:2)

你没有表明你是如何策划的,因此无法说出你做错了什么。但是,由于Kronecker delta的离散性,您应该使用stem函数绘制图形。没有必要明确转换为浮点数,但您需要在n的值中替换:

syms n;
S = 3*kroneckerDelta(n - 1, 0) + 2*kroneckerDelta(n - 2, 0) + 5*kroneckerDelta(n, 0);
N = -5:5;
S2 = subs(S,n,N);
stem(N,S2);

另一种选择是使用matlabFunction将符号表达式转换为数字函数:

syms n;
S = 3*kroneckerDelta(n - 1, 0) + 2*kroneckerDelta(n - 2, 0) + 5*kroneckerDelta(n, 0);
S2 = matlabFunction(S);
N = -5:5;
stem(n,S2(N));

两个选项都会生成如下图: stem plot