DSPRelated.com
Forums

How to obtain X(z^1/2) from X(z)

Started by Jérôme September 20, 2011
On Tue, 20 Sep 2011 15:36:47 -0500, Tim Wescott <tim@seemywebsite.com>
wrote:

>On Tue, 20 Sep 2011 11:55:26 -0500, J&#4294967295;r&#4294967295;me wrote: > >> Dear all, >> >> I have a question linked to the decimation of a signal. >> >> Let's have a signal x(n), and X(z) its Z-transform. If we decimate this >> signal, i.e. xe(n) = x(2n), we obtain the following Z-transform : Xe(z) >> = 1/2 [X(z^1/2) + X(-z^1/2)] >> >> My question is : is there a way to obtain a signal with X(z^1/2) as >> Z-transform. >> >> I find one theoretical way of doing it, but not exact in practice. If we >> create two signals containing respectively the even and odd samples of >> x(n) (even samples are obtained by decimation by two, odd samples are >> obtained by delaying the signal of one sample and then decimating by >> two), they have the following Z-transform : >> Xe(z) = 1/2 [X(z^1/2) + X(-z^1/2)] Xo(z) = 1/2 z^-1/2 [X(z^1/2) - >> X(-z^1/2)] >> >> Now, we can get the the wanted signal like this : X(z^1/2) = z^-1 Xe(z) >> + z^-1/2 Xo(z) >> >> The problem here is that we need to perform a delay of half a sample >> (z^-1/2), which can be approximated through FIR or IIR filters, but >> cannot be obtained exactly. >> >> I would like to know if anybody has an idea about this problem, or can >> help to show if there is a solution or not with a practical >> implementation (I doubt that there is a solution since to have Y(z) = >> X(z^1/2) through decimation, half of the samples of x(n) should be zero. >> But I didn't arrive to prove it). >> >> Thank you in advance >> >> J&#4294967295;r&#4294967295;me > >I'm not sure what math you believe that you're using to arrive at your Xe >(z), but you're violating one of the ground rules of using the z >transform to analyze systems. > >First, yes, you _are_ analyzing a system. If you had any one particular >signal and you wanted to find the z transform of its decimated version, >you would just find the time-domain version of the signal, decimate it, >and then find the z transform of that. But you want to have a 'magic >box' that you run any arbitrary signal through, and get a decimated >version out -- that magic box is a system. > >But the system that you want to analyze is time (well, shift) varying. >And you can't use the z transform to analyze shift varying systems, any >more than you can use the Laplace transform to analyze time varying ones.
Hi Tim, I agree with you. I have wondered, "Do Multirate Systems Even Have Transfer Functions?" My meager thoughts on this topic are at: http://www.dsprelated.com/showarticle/143.php [-Rick-]
Hi Rick,

I have been surprised by your answer. I separate my answer in three
points.


1. Multirate system and transfer function

For me, a transfer function H(z) is a function linking the output Y(z) of a
system to the input X(z) as follow : Y(z) = H(z) X(z).
If you have an expander for example, you have the following relation
between the output and the input : Y(z) = X(z^2). In this case there is
indeed no way to find a formula as above.

Now if you have the system shown in Fig. 13 of [1], the relation between
the ouput and the input is given by Eq. (27). By choosing adequately the
filters (Eq. (28)), you can remove the alias component and obtain Eq. (29)
from where you obtain a LTI system and a transfer function (Eq. (30)) !

So, in conclusion a multirate system can be a LTI system and have a
transfer function.


2. Use of z-transform with multirate systems

When Tim said "And you can't use the z transform to analyze shift varying
systems", I disagree.

The expander and the decimator are LTV systems and they don't have a
transfer function, but it does not mean that you cannot use z-transform for
the analysis. The articles and books about multirate systems do it, even in
your book "Understanding Digital Signal Processing", you have a section
(10.9) called "z-Transform Analysis of Multirate Systems".

In my case, I don't look for a transfer function, I just look for a system
(a multirate system) that gives me the output wanted.


3. Question on noble identities

But there are still some elements that I don't get. Let's start with the
basis with the noble identities (Fig. 9 of [1]). It is stated that these
identities can be proved provided G(z) is a rational transfer function
(i.e., a ratio of polynomials in z^-1). I don't understand why the
condition that G(z) be rational is necessary, and I didn't find the
explanation anywhere.

Taking a simple example, the two systems below are not equivalent. The
equations for the system 1 are correct, whereas the equations for the
system 2 are not correct (y(n) cannot be a delayed version of x(n) since
half of its samples are zeros), but I don't find the reason. Is it because
the function G(z) = z^-1/2 implies the impulse response g(n) = sinc(n-1/2)
is infinite length and thus that this filter is non causal ?

System 1 :
X(z) -> [Upsampling by 2] -> V(z) ->      [z^-1]       -> Y(z)

V(z) = X(z^2)
Y(z) = z^-1 V(z) = z^-1 X(z^2)

System 2 :
X(z) ->     [z^-1/2]      -> V(z) -> [Upsampling by 2] -> Y(z)

V(z) = z^-1/2 X(z)
Y(z) = V(z^2) = z^-1 X(z^2)


J&eacute;r&ocirc;me

[1] Multirate Digital Filters..., Vaidyanathan.
http://www.systems.caltech.edu/dsp/ppv/papers/ProcIEEEmultirateTUTExtra.pdf
On Sep 22, 11:04&#4294967295;am, "J&#4294967295;r&#4294967295;me" <jerome.leclere>
wrote:
> ... > Here is an example that I > don't understand. Imagine the following system : > > X(z) -> [Decimation by 2] -> X0(z) -> &#4294967295; &#4294967295; &#4294967295;[z^-1/2] &#4294967295; &#4294967295; -> V0(z) > X(z) -> &#4294967295; &#4294967295; &#4294967295;[z^-1] &#4294967295; &#4294967295; &#4294967295; -> X1(z) -> [Decimation by 2] -> V1(z) > W(z) = V0(z)+V1(z) -> [Expander by 2] -> Y(z) > > which gives the following equations : > X0(z) = 1/2 [X(z^1/2) + X(-z^1/2)] > V0(z) = z^-1/2 X0(z) = 1/2 z^-1/2 [X(z^1/2) + X(-z^1/2)] > X1(z) = z^-1 X(z) > V1(z) = 1/2 [X1(z^1/2) + X1(-z^1/2)] = 1/2 z^-1/2 [X(z^1/2) - X(-z^1/2)] > W(z) = V0(z) + V1(z) = z^-1/2 X(z^1/2) > Y(z) = W(z^2) = z^-1 X(z) > > We find that y(n) is a delayed version of x(n). But y(n) is the output of > an expander, which means that half of its samples are 0, so it cannot be a > delayed version of x(n) (except the particular case where half of the > sample of x(n) are 0 but no such hypothesis is made). > So I don't understant what is wrong in this system ? Is it the z^-1/2 delay > block that we cannot modelized like this ? >
Your "expander" is not a valid upsampler unless you include an implementation of the antialiasing filter required to prevent the generation of additional images of the original spectral content. As long as you persist in implementing an "expander" instead of a valid sample rate converter, you will get invalid results. Dale B. Dalrymple
Hi Dale,

Here the problem does not seem to come from the fact that I don't use
filter after the expander, because I count on the other branch to remove
the aliasing component.

If you consider the system below, you obtain well Y(z) = z^-1 X(z).

X(z) -> [Decimation by 2] ->  [Expander by 2]  ->     [z^-1]      -> V0(z)
X(z) ->      [z^-1]       -> [Decimation by 2] -> [Expander by 2] -> V1(z)
Y(z) = V0(z)+V1(z)

The difference with the previous system is that I have interverted the
expander and delay in the channel V0(z), i.e. :

X(z) -> [Decimation by 2] ->     [z^-1/2]      -> [Expander by 2] -> V0(z)

But I don't have the right to do this according to [1], and I don't
understand why.

J&eacute;r&ocirc;me

On Sep 30, 3:14 am, "J&#4294967295;r&#4294967295;me" <jerome.leclere>
wrote:
> Hi Dale, > > Here the problem does not seem to come from the fact that I don't use > filter after the expander, because I count on the other branch to remove > the aliasing component.
Your description of your processing is inadequate to make "count on the other branch" a meaningful statement.
> > If you consider the system below, you obtain well Y(z) = z^-1 X(z). > > X(z) -> [Decimation by 2] -> [Expander by 2] -> [z^-1] -> V0(z) > X(z) -> [z^-1] -> [Decimation by 2] -> [Expander by 2] -> V1(z) > Y(z) = V0(z)+V1(z) > > The difference with the previous system is that I have interverted the > expander and delay in the channel V0(z), i.e. : > > X(z) -> [Decimation by 2] -> [z^-1/2] -> [Expander by 2] -> V0(z)
After decimation by 2, the samples are at delays of z^-2. Half that delay is z^-1, not z^-1/2.
> > But I don't have the right to do this according to [1], and I don't > understand why.
The initial decimation throws away information that is not recovered by the expander. Dale B. Dalrymple