フィルターのクリア

Determine the Length of One Oscillation

5 ビュー (過去 30 日間)
Ben Le
Ben Le 2017 年 2 月 4 日
編集済み: Paul 2023 年 2 月 21 日
Hi everyone,
My Z-transform function is H(z) = (-3*z^2 + 4*z)/(8*z^3 -14*z^2 + 8*z -2). After plotted its response frequency, how do I determine the length of one oscillation? Any your help or hint is really appreciated!

採用された回答

Walter Roberson
Walter Roberson 2017 年 2 月 4 日
編集済み: Walter Roberson 2017 年 2 月 5 日
That transfer function does not oscillate. It has an infinite gain over time, so if you feed in even a single non-zero value and the rest 0, it will reach an arbitrarily large output with the same sign() as the single input.
The inverse laplacian gives
(1/4)*exp(t) - (5/8)*cos((1/8)*sqrt(7)*t)*exp((3/8)*t) - (11/56)*sqrt(7)*exp((3/8)*t)*sin((1/8)*sqrt(7)*t)
and although the sin() of sqrt(7)/8 * t implies there is a layer of oscillation of period 8*2*Pi/sqrt(7), that is overwhelmed by the exp(t)/r
  2 件のコメント
Ben Le
Ben Le 2017 年 2 月 5 日
Thank you so much Walter! there was no oscillate at all in my transfer function unless take inverse laplacian to get the period of the oscillation. Thanks!
Walter Roberson
Walter Roberson 2017 年 2 月 5 日
My calculation finds no oscillation even in the laplacian. The differentiation is everywhere positive -- it is just how positive it is that oscillates a bit.

サインインしてコメントする。

その他の回答 (1 件)

Paul
Paul 2023 年 2 月 21 日
編集済み: Paul 2023 年 2 月 21 日
I think this problem is supposed to be attacked like this.
Define H(z)
syms z
H(z) = (-3*z^2 + 4*z)/(8*z^3 - 14*z^2 + 8*z - 2);
Expand in partial fractions
H(z) = partfrac(H(z))
H(z) = 
The first term a delayed unit step and doesn't oscilate. The second term has complex poles and is therefore sinusoidal. Rewrite the second term with leading coefficient of 1 in the denominator.
c = children(H(z));
c1(z) = c{1};
c2(z) = c{2};
[num,den] = numden(c2)
num(z) = 
den(z) = 
num = num/16
num(z) = 
den = den/16
den(z) = 
The denominator can be written in terms of a and w0
a = sym(1)/sym(2);
w0 = acos(sym(3)/sym(4));
z^2 + 2*a*z*cos(w0) + a^2
ans = 
At this point, I suspect the point of the exercise was to find w0 and then determine the length of one period. However, a discrete-time sinusoid with frequency w0 is not periodic, so determining the length of one period is not really feasible.
If we want to recover the full tim domain signal, proceed as follows.
Multiply the numerator by z (this will be important later)
znum = z*num
znum(z) = 
Define two constants k1 and k2 and solve for them by comparing coefficients of the z-transform of a^n*(k1*cos(w0*n) + k2*sin(w0*n))*u(n) with the coefficients of znum
syms k1 k2
[k1,k2] = solve(coeffs(z*(k1*(z - a*cos(w0)) + k2*a*sin(w0)),z,'all') == coeffs(znum,z,'all'))
k1 = 
k2 = 
Define the discrete-time unit step function
syms n ingteger
u(n) = kroneckerDelta(n)/2 + heaviside(n);
The inverse z-transform of z*c2(z) is then
zc2(n) = a^n*(k1*cos(w0*n) + k2*sin(w0*n))*u(n);
Therefore the inverse z-transform of H(z) is (recalling that zc2 included a multiply-by-z, so we have to take that back out with a delay)
h(n) = iztrans(c1) + zc2(n-1)
h(n) = 
Compare to the iztrans of the original H(z), which has a more complicated expression
iztrans(H(z))
ans = 
Plot the two and verify they are equivalent.
nval = 0:10;
figure
stem(nval,h(nval))
hold on
stem(nval,subs(iztrans(H(z)),n,nval),'x')
figure
stem(nval,h(nval)-subs(iztrans(H(z)),n,nval))

カテゴリ

Help Center および File ExchangeCalculus についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by