manual continous to discrete conversion of low pass filter - wrong coefficients

4 visualizaciones (últimos 30 días)
Hello.
It's my first contact with matlab and I stuck at some kind of problem.
I try to conver first order low pass filter H=W/(W+s) to discrete manually.
I know that resoult for Gud should be Gud = (0.3859*z)/(z - 0.6141) but i still get (0.0006279*z)/(z - 0.9994) and cut off frequency is at 10^-4 insted of 10^2
On the paper everything work well but I do not understand what do I miss at matlab.
Thanks for any advice.
PS. is it possible to rewrite this code to something simpler? As I mentioned it's my first script at matlab.
fco = 100;
fs = 1000;
dt = 1/fs;
W = 2*pi*fco; % analog
Wd = W*dt; % digital
z = tf('z');
s = tf('s');
% sUD = (z-1)/(dt*z);
sUD = (1-z^-1)/(dt);
% sUD = 2/1 * (z-1)/(z+1);
Gud = Wd/(sUD+Wd);
Gud = minreal(Gud)
G = W/(W+s);
% G2 = c2d(G,dt,'tustin');
b = bodeoptions;
b.YLim = {[-6,3];[-360,0]}; %{maglimits;phaselimits}
b.XLim = [10^-5,10^4];
b.YLimMode = {'manual';'auto'};
b.XLimMode = 'manual';
b.FreqUnits = 'Hz';
bode(G,Gud,b);
legend('continous','digital');
grid;

Respuestas (0)

Productos


Versión

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by