z-transform of unit step function?
12 ビュー (過去 30 日間)
古いコメントを表示
i have this n-domain function H[n]= (0.5^n)*u[n] and i need to find z transformation of this function. i've tried this one:
>> syms n z
>> y = ((0.5)^n)*heaviside(n);
>> yz = ztrans (y,n,z)
yz =
1/(2*z - 1) + 1/2
isn't supposed to be 1/(-0.5^z-1)+1 ? is there any solution to solve this z transform?
採用された回答
Geoff Hayes
2014 年 5 月 27 日
I don't have the Symbolic Toolbox but I think that the provided answer is correct. If
x[n] = 0.5^n * u[n]
=> x[n] = {…,0,0,0.5^0 * 0, 0.5^1 * 1, 0.5^2 * 1,…}
then the z-transform is
sum(n=-Inf:+Inf)(0.5^n)*(z^-n)
= sum(n=0:+Inf)(0.5^n)*(z^-n) % ignore all n<0
= 0.5 + sum(n=1:+Inf)(0.5^n)*(z^-n)
= 0.5 + sum(n=1::+Inf)(0.5/z)^n
= 0.5 + (0.5/z)/(1-(0.5/z)) % assuming abs(0.5/z)<1
= 0.5 + 0.5/(z-0.5)
= 1/2 + (1/2)/(z-1/2)
= 1/(2*z - 1) + 1/2
2 件のコメント
Geoff Hayes
2014 年 5 月 27 日
As Azzi mentions below, MATLAB's heaviside defines H(0) to be 0.5, whereas other definitions of the same function define H(0) to be 1. (See http://en.wikipedia.org/wiki/Heaviside_step_function#Zero_argument for details.)
The formula in the third row of your table assumes that H(0)=1 and can be derived similar to above.
I think that it is fine to define u[n] with heaviside(n) as long as your are aware (and state) that heaviside(0) = 0.5.
その他の回答 (2 件)
Amine BENZOUBIR
2019 年 10 月 22 日
use this commande to change the origine to 1
v=1;
sympref('HeavisideAtOrigin', v);
Azzi Abdelmalek
2014 年 5 月 27 日
編集済み: Azzi Abdelmalek
2014 年 5 月 27 日
The heaveaside function of Matlab is defined with heaviside(0) equal to 0.5
If you look at the table using another definition of heaviside (e(0)=1), you will find the z-transform of a^n is z/(z-a) . The heaviside defined in Matlab can be written as
heaviside(n)=e(n)-delta(n) (delta is Kronecker function), the z-transform is z/(z-a)-0.5
In your case replace a by 0.5
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!