## Can matlab give me difference equation from transfer fucntion

### moonman (view profile)

on 12 Nov 2011
Latest activity Commented on by Ben Le

### Ben Le (view profile)

on 4 Feb 2017
Accepted Answer by Wayne King

### Wayne King (view profile)

Hi My transfer function is H(z)= (1-z(-1)) / (1-3z(-1)+2z(-2))
How can i calculate its difference equation. I have calculated by hand but i want to know the methods of Matlab as well

### Tags

Answer by Wayne King

### Wayne King (view profile)

on 12 Nov 2011

I think I'm trying to say that you see it right away if you have the Z-transform. Do you have the System Identification Toolbox? You can do:
M = idpoly([1 -3 2],[1 -1],'NoiseVariance',0)

moonman

### moonman (view profile)

on 12 Nov 2011
Ok for this equation it is ok
lets suppose we have some complex transfer function
then is there any way matlab gives difference equation
Ben Le

### Ben Le (view profile)

on 4 Feb 2017
Hi, If I don't have System Identification Toolbox, how can I do it in Matlab? Thanks.

Answer by Wayne King

### Wayne King (view profile)

on 12 Nov 2011

You have the difference equation:
H(z)= (1-z(-1)) / (1-3z(-1)+2z(-2))
y(n)-3*y(n-1)+2*y(n-2) = x(n)-x(n-1);
zplane([1 -1],[1 -3 2]);
This is not stable, you have a pole outside the unit circle.

moonman

### moonman (view profile)

on 12 Nov 2011
And Thanks for telling me abt new command zplane
I used to use pzmap which does not show overlapped poles and zeros but zplane is showing the digits if multiple poles and zeros are there at same place
Great help

### moonman (view profile)

on 12 Nov 2011

Thanks king yes i have calculated all this and i know it is unstable systm but i need to know that can matlab give difference equation the way it gives poles and zeros by pole zero command and plots by pzmap

Answer by Gert Kruger

### Gert Kruger (view profile)

on 29 Jul 2015
Edited by Walter Roberson

### Walter Roberson (view profile)

on 29 Jul 2015

syms z;
H = (1-z^-1) / (1-3*z^-1+2*z^-2);
[N, D] = numden(H);
Nc = eval(coeffs(N)); %Get coeffs and evaluatle symbolic variable, i.e. make real matrix
Dc = eval(coeffs(D));
Nc = Nc./(Dc(1)); %Turn into proper polynomial, first coeffs of a is 1
Dc = Dc./(Dc(1));
M = idpoly(Dc, Nc, 'NoiseVariance',0)