Advertisement
Guest User

cheby1.m

a guest
Jul 9th, 2019
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 2.08 KB | None | 0 0
  1. clc;
  2. %clear all;
  3.  
  4. syms s;
  5. %s = tf('s');
  6.  
  7. fsample = 20000; %frequencia de amosargem
  8. apass = -0.5;%ganho na frequencia de passagem
  9. astop = -20;%ganho na frequencia de corte
  10. wpass = 3000 * (180/pi);%frequencia de passagem
  11. wstop = 4000 * (180/pi);%frequencia de corte
  12. ts = 1/fsample % tempo de amostragem
  13.  
  14. e = (10^(-0.1*apass)-1)^(1/2);%calculo "e"
  15.  
  16. n = acosh((10^(-0.1*astop)-1)/(10^(-0.1*apass)-1))^1/2/(acosh(wstop/wpass));%calculo "n" exato
  17. n = ceil (n);%arredonda "n" para cima
  18.      
  19. D = (asinh(e^-1))/n;%calculo "D"
  20.  
  21. if mod(n,2) == 0%ordem par
  22.     M = (n/2)-1;%calculo M
  23.     x = 1;%variavel auxiliar
  24.     Hsym = 1;%termo inicial
  25.    
  26. elseif mod(n,2) == 1%se ordem impar
  27.     M = ((n-1)/2)-1;%calculo de M
  28.     x = 2;%variavel auxiliar
  29.     sigma(1,1) = -sinh(D);
  30.     omega(1,1) = 0;
  31.     Hsym = sinh(D)/(s+sinh(D));%termo inicial
  32. end
  33.  
  34. m = M;
  35. B1 = zeros(1,x+M);
  36. B2 = zeros(1,x+M);
  37. phi = zeros(1,M+1);
  38. while m >= 0%n termos
  39.     phi(1,m+1) = ((pi*(2*m+1))/(2*n));
  40.     sigma(1,m+x) = -sinh(D)*sin(phi(1,m+1));
  41.     omega(1,m+x) = cosh(D)*cos(phi(1,m+1));
  42.    
  43.     B1(1,m+x) = -2*sigma(1,m+x);
  44.     B2(1,m+x) = sigma(1,m+x)^2+omega(1,m+x)^2;
  45.     Hsym = Hsym*B2(1,m+x)/(s^2+B1(1,m+x)*s+B2(1,m+x));%ftran
  46.    
  47.     m = m-1;
  48. end
  49.  
  50. Hsym = vpa(Hsym,5);
  51.  
  52. pretty(Hsym); %deixa bonitinho
  53.  
  54. %transforma de uma variavel tipo "sym" para tipo "tf"
  55. %--------------------------------------------------------------------------
  56. [symNum,symDen] = numden(Hsym); %cria tf simbolica
  57. TFnum = sym2poly(symNum)/2.5e65;  %casta numerador pra polinomio
  58. TFden = sym2poly(symDen)/2.5e65;    %idem denominador
  59. Htf =tf(TFnum,TFden);
  60. %--------------------------------------------------------------------------
  61. %divido por '2.5e65' pois esse era o erro da mudan�a de variavel
  62. %fazer essa corre��o dentro da fun��o � mais simples
  63.  
  64. display(Htf);%apresenta a fun��o de transferencia
  65.  
  66. % casta pra discreto com a transformação bilinear de tustin
  67.  
  68. htf_dis = c2d(Htf,ts,'tustin')
  69.  
  70. %pega a função de transferencia em Z e cria um objeto simbólico
  71.  
  72. syms k;
  73. [num, den] = tfdata(htf_dis);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement