我正在尝试使用以下代码生成使用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)
答案 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));