关于matlab ztrans函数

下面的程序就是简单的对单位阶跃函数做Z变换,但明白人都知道这结果不对啊,正确结果应该是z/(z-1) 。不知道后面为啥多个1/2。heaviside 函数我做了简单的修改,就是把X==0的值改成了1(原先默认是0.5),但是改回0.5仍然是这个结果。怎么用matlab来计算离散单位阶跃函数U[n]的z变换????
syms n
>> x=heaviside(n);
>> X=ztrans(x)

X =

1/(z - 1) + 1/2

这个结果应该是正确的。
z变换定义: F(z) = symsum(f(n)/z^n, n, 0, inf),则
x=heaviside(n)有三种结果:n<0时,x=0;n=0时,x=0.5;n>0时,x=1,相应的z变换是
X=ztrans(x)有两种结果:n<0时,X=0;
n>=0时,X=0.5/z^0+1/z+1/z^2+1/z^3+...+1/z^inf
=0.5+1/z+1/z^2+1/z^3+...+1/z^inf
而在z>1时1/z+1/z^2+1/z^3+...+1/z^inf=1/(z-1)
所以,原结果是对的。
温馨提示:答案为网友推荐,仅供参考