Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- clc;
- %clear all;
- syms s;
- %s = tf('s');
- fsample = 20000; %frequencia de amosargem
- apass = -0.5;%ganho na frequencia de passagem
- astop = -20;%ganho na frequencia de corte
- wpass = 3000 * (180/pi);%frequencia de passagem
- wstop = 4000 * (180/pi);%frequencia de corte
- ts = 1/fsample % tempo de amostragem
- e = (10^(-0.1*apass)-1)^(1/2);%calculo "e"
- n = acosh((10^(-0.1*astop)-1)/(10^(-0.1*apass)-1))^1/2/(acosh(wstop/wpass));%calculo "n" exato
- n = ceil (n);%arredonda "n" para cima
- D = (asinh(e^-1))/n;%calculo "D"
- if mod(n,2) == 0%ordem par
- M = (n/2)-1;%calculo M
- x = 1;%variavel auxiliar
- Hsym = 1;%termo inicial
- elseif mod(n,2) == 1%se ordem impar
- M = ((n-1)/2)-1;%calculo de M
- x = 2;%variavel auxiliar
- sigma(1,1) = -sinh(D);
- omega(1,1) = 0;
- Hsym = sinh(D)/(s+sinh(D));%termo inicial
- end
- m = M;
- B1 = zeros(1,x+M);
- B2 = zeros(1,x+M);
- phi = zeros(1,M+1);
- while m >= 0%n termos
- phi(1,m+1) = ((pi*(2*m+1))/(2*n));
- sigma(1,m+x) = -sinh(D)*sin(phi(1,m+1));
- omega(1,m+x) = cosh(D)*cos(phi(1,m+1));
- B1(1,m+x) = -2*sigma(1,m+x);
- B2(1,m+x) = sigma(1,m+x)^2+omega(1,m+x)^2;
- Hsym = Hsym*B2(1,m+x)/(s^2+B1(1,m+x)*s+B2(1,m+x));%ftran
- m = m-1;
- end
- Hsym = vpa(Hsym,5);
- pretty(Hsym); %deixa bonitinho
- %transforma de uma variavel tipo "sym" para tipo "tf"
- %--------------------------------------------------------------------------
- [symNum,symDen] = numden(Hsym); %cria tf simbolica
- TFnum = sym2poly(symNum)/2.5e65; %casta numerador pra polinomio
- TFden = sym2poly(symDen)/2.5e65; %idem denominador
- Htf =tf(TFnum,TFden);
- %--------------------------------------------------------------------------
- %divido por '2.5e65' pois esse era o erro da mudan�a de variavel
- %fazer essa corre��o dentro da fun��o � mais simples
- display(Htf);%apresenta a fun��o de transferencia
- % casta pra discreto com a transformação bilinear de tustin
- htf_dis = c2d(Htf,ts,'tustin')
- %pega a função de transferencia em Z e cria um objeto simbólico
- syms k;
- [num, den] = tfdata(htf_dis);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement