home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 12 / CD_ASCQ_12_0294.iso / news / 2376 / radiosim / example.pro < prev    next >
Text File  |  1994-01-21  |  3KB  |  79 lines

  1. '               Exemple d'écriture d'un module (procédure BASIC)
  2. '               ------------------------------------------------
  3.  
  4.  
  5. '               En BASIC, les commentaires sont précédées par un '
  6.  
  7.  
  8. SUB ModuleGaussFilter ()  ' les modules RADIOSIM sont des procédures BASIC
  9.                           ' sans argument
  10. DEFINT I-K, N
  11. DEFDBL A-H, L-M, O-Y
  12. DEFSTR Z
  13.  
  14. ' -------------------------- Début de la partie interactive----------------
  15. '
  16. ' voir explications dans le manuel, section 6.1, et aussi 6.3.29 et 6.3.22
  17. '
  18. B = VAL(Z(1))
  19. Noise$ = Z(2)
  20. SELECT CASE Key$
  21.  
  22. CASE "BEGIN"
  23.    ModuleName$ = "Filtre gaussien"    ' nom en clair qui apparaît à l'écran
  24.                                       ' n°2 et dans le fichier .CAN
  25.    NbParam = 2
  26. Z(1) = "Bande passante HF à 3 dB                         │  10│10│CH+0│UF"
  27. Z(2) = "Filtre inclus dans la bande de bruit (o/n)       │   N│ 1│OONN│  "
  28. EXIT SUB
  29.  
  30. CASE "EXCEPT"
  31. '     on place ici les interdictions de saisie spécifiques du module,
  32. '     celui-ci n'en a pas.
  33. '     si on inscrivait IF B>10 THEN Ok$= "N", on interdirait l'entrée
  34. '     d'une bande supérieure à 10 MHz
  35. EXIT SUB
  36.  
  37. CASE "HELP"
  38. Center "Filtre gaussien"  ' procédure Center: voir manuel, section 6.3.6
  39. Pn "Fonction de transfert en EXP(- g F^2)"
  40. Pn "La réponse impulsionnelle est aussi gaussienne, en EXP(-(πt)^2/g)"
  41. ' procédure Pn: voir manuel, section 6.3.33
  42. EXIT SUB
  43.  
  44. END SELECT
  45.  
  46. ' -------------------------- Fin de la partie interactive ------------------
  47.  
  48. PRINT "Filtre gaussien"
  49. IF Noise$ <> "N" THEN NBw 0, 0, 0, "O"   ' ouverture du fichier NBW
  50.                                          ' par la procédure Nbw, manuel 6.3.27
  51. IF Domain$ = "T" THEN Fft A(), B()       ' passage dans le domaine des fréquences
  52. PRINT "Bande passante HF à 3 dB = ";
  53. PRINT USING "#####.###"; B;
  54. PRINT " "; Uf$
  55. B = B * Uf / 2                           ' B = bande à 3dB en bande de base
  56. G = LOG(2) / 2 / B / B
  57. NBw 0, 1, 0, ""
  58. FOR I = 1 TO N / 2 - 1
  59.    F = I * dF
  60.    A = EXP(-G * F * F)
  61.    A(I) = A(I) * A
  62.    B(I) = B(I) * A
  63.    A(N - I) = A(N - I) * A
  64.    B(N - I) = B(N - I) * A
  65.    NBw I, A, 0, ""               ' prise en compte du filtre dans le calcul
  66.    NBw N - I, A, 0, ""           ' de la bande équivalente de bruit, et
  67.                                  ' inscription dans les tableaux Pre et Pim 
  68.  
  69. NEXT I
  70. A(N / 2) = 0   ' par principe, on annule le signal à N/2. C'est sans effet si
  71.                ' N et Ns sont convenablement dimensionnés (pas de recouvrement
  72.                ' de spectre)
  73. B(N / 2) = 0
  74. NBw N / 2, 0, 0, ""
  75. IF Noise$ <> "N" THEN NBw 0, 0, 0, "C"   ' fermeture du fichier NBW
  76.  
  77. END SUB
  78.  
  79.