Problem seen in discrete transfer function with varable z^-1, when calc ztrans of x(n)=n*u(n)
2 ビュー (過去 30 日間)
古いコメントを表示
Hi dears,
Who knows why X1 and X2 are not the same?
X2 should be (z^-1)/(1-z^-1)^2 or (z^-1)/(1 - 2 z^-1 + z^-2)
Thanks
sympref('HeavisideAtOrigin', 1); % by default u(0)=0.5 so we set U(0)=1
u = @(n) heaviside(n) ; % change function name
u0=u(0)
syms n
x(n)=n*u(n)
X1=ztrans(x)
[num, den] = numden(X1);
X2 = tf(sym2poly(num), sym2poly(den),-1, 'variable', 'z^-1')
X2_var=X2.variable
1 件のコメント
Walter Roberson
2022 年 9 月 29 日
My tests show it is related to specifying the variable. If you let the variable default to 'z' then you get a z in the numerator
採用された回答
Paul
2022 年 9 月 29 日
編集済み: Paul
2022 年 9 月 30 日
Code works exactly as advertised
u = @(n) heaviside(n) ; % change function name
syms n
x(n)=n*u(n)
X1=ztrans(x)
[num, den] = numden(X1)
As documented in sym2poly, it returns the polynomial in descending powers of the variable, in this case z
sym2poly(num)
[1 0] is the poly representation of z.
sym2poly(den)
Here, we are telling tf that sym2poly(num) is the poly representation with variable z^-1. But wrt to z^-1, [1 0] = 1 + 0*z^-1 = 1, which is exactly what we get.
X2 = tf(sym2poly(num), sym2poly(den),-1, 'variable', 'z^-1')
So we need two steps
X2 = tf(sym2poly(num),sym2poly(den),-1)
X2.Variable = 'z^-1'
9 件のコメント
Paul
2022 年 9 月 30 日
They only need to be the same size if that's what the problem requires. For an example of when it's not required
H(z) = (1 + z^-1) / (1 + 2*z^-1 + 3*z^-2)
H = tf([1 1],[1 2 3],-1,'Variable','z^-1')
You can, of course, zero-pad the numerator if you wish (zero-pad to the right for z^-1)
H = tf([1 1 0],[1 2 3],-1,'Variable','z^-1')
but you're not obligated to do so. The only reuqirement is that num and den represent the system for the Variable that's being used.
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Assumptions についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!