C#, fonction curieusement(?) incorrecte.

Discutez d'informatique ici !
bnoch
Membre Naturel
Messages: 15
Enregistré le: 11 Oct 2013, 00:11

C#, fonction curieusement(?) incorrecte.

par bnoch » 29 Nov 2013, 00:16

Passer 0.01d à la fonction suivante est supposé produire une courbe audible (44100hz pour l’échantillonnage).
Mais l'alternance d'amplitude n'est pas équilibrée et le niveau file vers le haut.
Ce même en arrondissant phase, progression et amplitude.

Où ce situe la cause selon vous?

static double phase = 0, progression = 0, amplitude = 1;

public static double Amplitude (double phasePerSample)
{
phase += phasePerSample;
switch ((int)(phase % 4)) {
case 0:
progression -= phasePerSample / 100d;
break;
case 1:
progression += phasePerSample / 100d;
break;
case 2:
progression += phasePerSample / 100d;
break;
case 3:
progression -= phasePerSample / 100d;
break;
}
amplitude += progression;
return amplitude;
}



joel76
Membre Relatif
Messages: 230
Enregistré le: 11 Fév 2013, 15:31

par joel76 » 30 Nov 2013, 11:27

Le calcul (int)(phase %4) me parait bizarre, puisque tu calcules un modulo sur un double, j'aurais plutot écrit ((int) phase) % 4.

bnoch
Membre Naturel
Messages: 15
Enregistré le: 11 Oct 2013, 00:11

par bnoch » 30 Nov 2013, 23:52

Salut, merci pour ta réponse, en fait [un double modulo un nombre] retourne un double que je transtype en entier, le résultat est le même qu'avec ta méthode cela dit.

Mais j'ai trouvé mon erreur, la progression commence de zéro, décroit, ce stabilise, recroit et ce stabilise à nouveau donc on obtient une dérive négative. Je n'ai par contre pas encore trouvé la juste correction nécessaire.

Le but de ce projet était de comparer cette forme d'ondoiement avec celle d'une sinusoïde de même fréquence.

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 12:39

par Dlzlogic » 01 Déc 2013, 11:14

Bonjour,
Peut-être vous trouverez votre bonheur dans le chapitre des régressions et équations intégrales.
http://www.scribd.com/JJacquelin/documents

bnoch
Membre Naturel
Messages: 15
Enregistré le: 11 Oct 2013, 00:11

par bnoch » 01 Déc 2013, 12:36

Merci pour ces lectures.

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 5 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite