Bruit blanc en C
Dernière réponse : dans Programmation
Bonjour, je dois coder un bruit blanc en C. Pouvez vous m'aider?
Merci!
Sophie.
Merci!
Sophie.
Autres pages sur : bruit blanc
Lassé par la pub ? Créez un compte
bon, je vous explique en gros.
Y'a la fonction gengamma(alpha, beta), en matlab
j'ai recuppéré son code en matlab, mais facilement traduisible en C, hormis la fonction rand(a,b) qui donne au hasard un nombre dans une suite de nombres uniformément répartis sur [0,1]. Je cherche donc comment coder cette fonction en C.
Je recherche également la libraire où se trouvent les tan, cos, sin en C.
Merci beaucoup de votre aide!
Sophie
Y'a la fonction gengamma(alpha, beta), en matlab
j'ai recuppéré son code en matlab, mais facilement traduisible en C, hormis la fonction rand(a,b) qui donne au hasard un nombre dans une suite de nombres uniformément répartis sur [0,1]. Je cherche donc comment coder cette fonction en C.
Je recherche également la libraire où se trouvent les tan, cos, sin en C.
Merci beaucoup de votre aide!
Sophie
Quant au random, je me souviens plus très bien... ca fait longtemps que je n'ai pas fait de C, mais j'ai trouvé ça sur le net, ça devrait pouvoir t'aider :
C'est l'instruction rand()%100 qui te renvoie un nombre entre 0 et 99, si tu le veux entre 0 et 1, divise le par 100.
Attention, tu es obligée de faire un randomize() avant d'utiliser la fonction rand.
En revanche, il me semblait qu'il fallait lui mettre un nombre en initialisation, et là je vois pas ça... Et pour pas avoir toujours la même chose, on l'initialisait avec l'heure... Mais là je sais plus... désolée...
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main(void)
{
int i ;
randomize() ;
printf("Dix nombres aléatoires entre 0 et 99\n\n") ;
for (i=0 ; i<10 ; i++)
printf("%d\n",rand()%100);
return 0 ;
}
C'est l'instruction rand()%100 qui te renvoie un nombre entre 0 et 99, si tu le veux entre 0 et 1, divise le par 100.
Attention, tu es obligée de faire un randomize() avant d'utiliser la fonction rand.
En revanche, il me semblait qu'il fallait lui mettre un nombre en initialisation, et là je vois pas ça... Et pour pas avoir toujours la même chose, on l'initialisait avec l'heure... Mais là je sais plus... désolée...
Pour initialiser, tu peux utiliser la fonction suivante :
Essaie plutôt :
(Tu vois qu'on peut d'aider avec une question précise
)
Pour créer un vrai bruit blanc, tu ne dois surtout pas faire un modulo sur rand(). Tu aurais un (très léger) décalage vers 0. (C'est très théorique, la différence est infinitésimale, mais c'est vrai)
srand( (unsigned)time( NULL ) );
Essaie plutôt :
Tu peux alors multiplier par la borne sup' qui t'intéresse.
#include <stdlib.h>
(float) rand() / RAND_MAX // Le résultat est alors dans l'intervalle [0; 1]
(float) rand() / ( RAND_MAX + 1.0 ) // Le résultat est alors dans l'intervalle [0; 1[
(Tu vois qu'on peut d'aider avec une question précise
)
c encore moi ,Voilà une kestion simple (je pense
) : comment générer ce bruit blanc dans une bande de largeur Fe [-Fe/2 ; Fe/2](fréquence d'échantillonnage) ?????Càd ce code marqué là haut genère un bruit blanc en précisant le nb d'échantillons mais je veux générer ce signal dans une bande !!!!
Comment faire ????
Aidez moiiiiiiiiiiiii
Lassé par la pub ? Créez un compte