使用 Kronecker Delta 的符号 Z 变换
Symbolic Z Transform with Kronecker Delta
我正在尝试绘制使用以下代码生成的 kroneckerDelta
的函数。我尝试了很多方法来绘制增量,但没有任何效果。我尝试 fplot
并在绘图前将 S
变量转换为双精度变量。但实际上没有任何效果。
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)
你没有展示你是如何尝试绘制的,所以不可能说出你做错了什么。但是,由于您的绘图的 Kronecker delta, you should probably use the 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));
这两个选项都会生成如下图:
我正在尝试绘制使用以下代码生成的 kroneckerDelta
的函数。我尝试了很多方法来绘制增量,但没有任何效果。我尝试 fplot
并在绘图前将 S
变量转换为双精度变量。但实际上没有任何效果。
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)
你没有展示你是如何尝试绘制的,所以不可能说出你做错了什么。但是,由于您的绘图的 Kronecker delta, you should probably use the 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));
这两个选项都会生成如下图: