GÉNÉRATEUR DE SIGNAL BASSE FRÉQUENCE TEMPS RÉEL

acx01b Messages postés 280 Date d'inscription dimanche 7 septembre 2003 Statut Membre Dernière intervention 8 juillet 2014 - 8 mars 2007 à 21:07
jacquesleps Messages postés 1 Date d'inscription mardi 25 mars 2008 Statut Membre Dernière intervention 25 mars 2008 - 25 mars 2008 à 20:14
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/41792-generateur-de-signal-basse-frequence-temps-reel

jacquesleps Messages postés 1 Date d'inscription mardi 25 mars 2008 Statut Membre Dernière intervention 25 mars 2008
25 mars 2008 à 20:14
je présume que tu veux dire:

int i;
d[0] = 0; // et pas tab
for (i=0; i < 2*n-1; i++) {
c = a*c-b*d[i];
d[i+1] = a*d[i]+b*c;
}
cs_arb Messages postés 40 Date d'inscription lundi 18 février 2002 Statut Membre Dernière intervention 5 novembre 2012 4
11 avril 2007 à 01:36
Super et très intéressant : le hic : je n'ai pas VCC. Puis je porter tout ça sous DEVCPP sans trop d'encombre ou un autre?
Merci de votre aide.
cs_max12 Messages postés 1491 Date d'inscription dimanche 19 novembre 2000 Statut Modérateur Dernière intervention 7 juillet 2014
9 mars 2007 à 16:25
EnterCriticalSection sert à faire de la synchronisation de thread donc à bloquer ceux-ci tant que la section n'est pas libéré donc sa n'a rien à voir :P Il faut utiliser SetThreadPriority dans ce cas :)
Taron31 Messages postés 199 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 28 février 2008
9 mars 2007 à 13:12
si tu veux être encore plus performant, tu peux coder en asm inline avec la FPU les calculs des flottants...
gabuzomeuh Messages postés 53 Date d'inscription jeudi 31 juillet 2003 Statut Membre Dernière intervention 28 mars 2007
8 mars 2007 à 22:09
Quand la fenêtre est réduite ou restaurée, il y a une courte interruption du processus.
Doit-on utiliser un thread ou un SetPriorityClass ou un EnterCriticalSection ?
acx01b Messages postés 280 Date d'inscription dimanche 7 septembre 2003 Statut Membre Dernière intervention 8 juillet 2014 6
8 mars 2007 à 21:10
troisième essai...


double angle = 2*M_PI/n;

double a = cos(angle);
double b = sin(angle);
double c = 1;
double d[2*n];

int i;
tab[0] = 0;
for (i=0; i < 2*n-1; i++) {
c = a*c-b*d[i];
d[i+1] = a*d[i]+b*c;
}

dans le tableau d tu as alors toute ta période
acx01b Messages postés 280 Date d'inscription dimanche 7 septembre 2003 Statut Membre Dernière intervention 8 juillet 2014 6
8 mars 2007 à 21:08
dans le tableau d pardon
acx01b Messages postés 280 Date d'inscription dimanche 7 septembre 2003 Statut Membre Dernière intervention 8 juillet 2014 6
8 mars 2007 à 21:07
salut,

il est plus intéressant au niveau performance je pense de calculer les points de la sinusoïde à l'aide des complexes
(a+ib)(c+id) = (ac-bd) + i(ad+bc)

double angle = 2*M_PI/n;

double a = cos(angle);
double b = sin(angle);
double c = 1;
double d[4*n];

int i;
tab[0] = 0;
for (i=1; i < 2*n; i++) {
tmp = a*c-b*d[2*i-2];
tab[2*i] = a*d[2*i-2]+b*c;
}

dans le tableau c tu as alors toute ta période

a+
Rejoignez-nous