Advertisement
Guest User

Untitled

a guest
Jun 19th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scilab 1.55 KB | None | 0 0
  1. clear;
  2. clf;
  3.  
  4. function [num, den] = Pbande2ordNum (Q, Fo, Fe)
  5.     a = 1/tan(%pi*Fo/Fe);
  6.     num = [1, 0, -1];
  7.     den = round([1 + Q*a + Q/a, 2*Q/a - 2*Q*a, Q*a - 1 + Q/a]);
  8. endfunction
  9.  
  10. function [num, den] = Pbas1ordNum (Fc, Fe)
  11.     a = 1/tan(%pi*Fc/Fe);
  12.     num = [1 1];
  13.     den = round([1 + a, 1 - a]);
  14. endfunction
  15.  
  16. Q  = 7:0.25:9;
  17. F1 = 1000;      F2 = 1200;
  18. Fe = 9.725e3;   Te = 1/Fe;
  19.  
  20. fc = 110;
  21.  
  22. ecart_f1 = 999;
  23. ecart_f2 = 999;
  24. bestQ1 = 999;
  25. bestQ2 = 999;
  26. bestDen1 = 0;
  27. bestDen2 =0;
  28. bestf1 = 0;
  29. bestf2 = 0;
  30.  
  31. for i = 1 : length(Q)
  32.      res = 0.5;
  33.      N = 10000
  34.      
  35.     [num1, den1] = Pbande2ordNum (Q(i), F1, Fe);
  36.     [num2, den2] = Pbande2ordNum (Q(i), F2, Fe);
  37.    
  38.     [H1, fr1] = frmag(num1, den1, N);
  39.     [H2, fr2] = frmag(num2, den2, N);
  40.    
  41.     [val, ind1] = max(H1);
  42.     f1_reel = fr1(ind1)*Fe;
  43.     [val, ind2] = max(H2);
  44.     f2_reel = fr2(ind2)*Fe;
  45.    
  46.     err_f1 = abs(f1_reel - F1);
  47.     err_f2 = abs(f2_reel - F2);
  48.    
  49.     if err_f1 < ecart_f1 then
  50.         ecart_f1 = err_f1;
  51.         bestQ1 = Q(i);
  52.         bestDen1 = den1;
  53.         bestf1 = f1_reel;
  54.     end;
  55.    
  56.     if err_f2 < ecart_f2 then
  57.         ecart_f2 = err_f2;
  58.         bestQ2 = Q(i);
  59.         bestDen2 = den2;
  60.         bestf2 = f2_reel;
  61.     end;
  62.    
  63. end
  64.  
  65. [num3, den3] = Pbas1ordNum (fc, Fe);
  66. [H3, fr3] = frmag(num3, den3, 10000);
  67. plot(fr3.*Fe, H3, 'b');
  68.  
  69. disp(den3, "den3: ");
  70.  
  71.  
  72. disp(bestf1, "f1 = ");
  73. disp(bestQ1, "bestQ1 = ");
  74. disp(bestDen1, "den1 = ");
  75. disp(bestf2, "f2 = ");
  76. disp(bestQ2, "bestQ2 = ");
  77. disp(bestDen2, "den2 = ");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement