|
|||||||||||||
le 06-27-2012 10:42 AM
Bonjour,
J'ai besoin de tracer le spectre de phase d'un signal et j'utilise la fonction AmpPhaseSpectrum. Cependant, malgré l'aide de LabWindows je ne comprends pas à quoi le df correspond vu qu'il est considéré comme une sortie. De plus, à quoi correspond le NumberOfElements de cette fonction? Comme je passe un tableau(équivalent à un vecteur) de points en variable, il est stipulé que la longueur de ce tableau doit être au moins égale à NumberOfElements/2, pourquoi?
Ensuite, j'essaye de tracer grâce à la fonction PlotXY mon spectre de phase (x la phase, y l'amplitude). Quand je compile et exécute le tout et que je clique sur le bouton (de l'interface que j'ai créée) qui est censé me générer mon spectre de phase j'obtiens le message d'erreur suivant :
The program has cause a 'General Protection' fault at.... au niveau de la ligne où se trouve AmpPhaseSpectrum.
Je ne comprends pas.
Merci d'avance,
_trent_
Résolu ! Accéder à la solution.
le 06-28-2012 07:21 AM
Bonjour _trent_,
Un peu de littérature sur les transformées discrètes pourront répondre notament à la question "pourquoi la moitié d'éléments en sortie".
Pour ce qui est de df, c'est le pas fréquentiel retourné par la fonction, c'est donc un paramètre, mais étant passé par référence (en mettant un & devant), le C nous permet d'atteindre son adresse en mémoire pour y écrire dedans, comme si c'était en réalité une sortie.
Comprendre et corriger ces points devrait faire disparaître les soucis de General Protection Fault.
Cdt,
Eric
Eric M. - Application Engineer Specialist
Certified LabVIEW Developer
National Instruments France
06-28-2012 07:26 AM - modifié 06-28-2012 07:33 AM
Ok merci, j'ai compris pour le NumberOfElements/2. Mais concernant le df, je dois faire quoi du coup? Je déclare un pointeur et je le mets dans la case df du recall fucntion panel? ou bien je ne met rien du tout? Parce que j'ai déclaré un double* df et je l'ai passé comme paramètre pour df mais ça ne me change pas l'erreur... ![]()
Ah et puis ce que je n'ai pas dit non plus c'est que j'ai modifié tout mes tableaux contenant les différents points des signaux que je manipule en leur donnant une longueur de 50. En même temps, j'ai mis 64 pour number of elements donc normalement, si j'ai bien compris, la longueur des tableaux ne devrait pas poser de problème, si? Et puis du coup j'obtiens l'erreur suivante : Array argument too small. Argument must contain at least 64 elements.
Du coup, je me place à NumberOfElements=32. Et ca me ramène à ma première erreur (Genral...)
le 06-29-2012 01:56 AM
Hello _trent_,
Il ne sert à rien de déclarer un pointeur : il suffit de passer l'adresse de la variable dans la fonction.
double pas_freq;
...
AmpPhaseSpectrum (data, POWER_2_10, ENABLE_OPTION, 1.0, specf, specp, &pas_freq);
Et c'est gagné ;-)
Si j'ai un peu de temps je ferai un exemple dans la journée.
A+
Eric
Eric M. - Application Engineer Specialist
Certified LabVIEW Developer
National Instruments France
le 06-29-2012 03:12 AM
Ouha merci
!!
Je vais essayer ce qui m'est conseillé et si ça ne fonctionne pas je mettrai le bout de code. Mais t'embêtes pas à faire un exemple pour l'instant!! J'en demande pas autant !!
En tous cas, merci beaucoup!
le 06-29-2012 03:34 AM
Ca fonctionne!!! Reste plus qu'à exploiter tout ça.... ![]()
Je souhaite tracer sur un graphe le spectre de mon signal, d'ailleurs s'il y a quelque piste...
Ce que j'ai fais c'est une boucle qui me trace sur un graphe type XY chaque amplitude en fonction de chaque phase. Est-ce la bonne méthode? Y a-t-il plus court et plus simple?`
merci!
Mon Profil | Confidentialité |
Conditions d'utilisation |
Contacter NI
© 2011 National Instruments Corporation. All rights reserved. | Envoyer cette page
|
||

Envoyer cette page