Bonjour,
Je ne comprends pas mon problème. Ca doit être un problème de réallocation
Voila mon code :
// Initialisation de fen_remontee de -2 à +2
int cpt = -2;
int demi_fen_remontee = 2 ;
unsigned int i_max ;
double * signal_fen;
pic_potentiels[nb_decomposition] = (unsigned long*) malloc( taille * sizeof( unsigned long) );
//signal_fen = (double*) malloc ( taille * sizeof(double) );
for(unsigned int i_ech = nb_decomposition - 1 ; i_ech > 0 ; i_ech--)
{
printf ( "Etude de l'echelle : %u " , i_ech ) ;
printf(" \n");
signal_fen = (double*) malloc ( tailles_ond[i_ech ] * sizeof(double) );
// On copie notre signal dans une variable temporaire
for( i = 0 ; i < tailles_ond[i_ech] ; i++)
{
//printf("%f \n", ond_d[i_ech][i]);
signal_fen[i] = abs(ond_d[i_ech][i]); // On récupère les valeurs de chaque décomposition et on prend la valeur absolue
}
// On rajoute les pic potentiels à la suite
for(unsigned int i_pic = 0 ; i_pic < nb_pics[i_ech] ;i_pic++)
{
pic_potentiels[nb_decomposition][ i_pic + nb_pics[nb_decomposition] ] = pic_potentiels[i_ech] [ i_pic ];
}
nb_pics[nb_decomposition] = nb_pics[nb_decomposition] + nb_pics[i_ech];
//pic_potentiels[nb_decomposition] = (unsigned long*)malloc( nb_pics[nb_decomposition] * sizeof(unsigned long) );
// On cherche le maximum sur notre intervalle
for(unsigned int i_pic = 0 ; i_pic < nb_pics[nb_decomposition] ; i_pic++)
{
pic_potentiels[nb_decomposition][i_pic] = pic_potentiels[nb_decomposition][i_pic]*2 ;
max( & ( signal_fen [ pic_potentiels[nb_decomposition][i_pic] - demi_fen_remontee ] ) , 2*demi_fen_remontee+1 , & i_max );
pic_potentiels[nb_decomposition][i_pic] = pic_potentiels[nb_decomposition][i_pic] - demi_fen_remontee + i_max ;
}
FILE * fic ;
fic = fopen ( "D:\\tmp\\decomposition.txt" , "w" ) ;
double * sig_pics = ( double * ) malloc ( tailles_ond[i_ech] * sizeof ( double ) ) ;
double v_min , v_max ;
v_min = min ( signal_fen , tailles_ond[i_ech], NULL ) ;
v_max = max ( signal_fen , tailles_ond[i_ech], NULL ) ;
for( j = 0 ; j < tailles_ond[i_ech] ; j++)
{
sig_pics [ j ] = v_min ;
//printf("%f \n" ,sig_pics [ j ]);
//fprintf ( fic , "%f \n" /*,signal_fen[j]*/ ,sig_pics [ j ] ) ;
}
for( j = 0 ; j < nb_pics[i_ech ] ; j++)
{
sig_pics [ pic_potentiels[nb_decomposition][j] ] = v_max ;
printf ( "%f\n" ,sig_pics [ pic_potentiels[nb_decomposition][j] ]) ;
}
printf ( "Taille = %u\n" , tailles_ond[i_ech] ) ;
for ( j = 0 ; j < tailles_ond[i_ech ] ; j++ )
{
//sig_pics [ j ] = v_min ;
//signal_fen [ j ] = v_min ;
printf("%f \n" ,signal_fen[j]);
printf("%f \n" ,sig_pics [j]);
//fprintf ( fic , " %f \n" ,signal_fen[j] ,sig_pics [j] ) ;
//fprintf ( fic , " %e \n" ,signal_fen[j] ) ;
}
fclose ( fic ) ;
free(signal_fen);
}
for(unsigned int i_pic = 0 ; i_pic < nb_pics[0] ;i_pic++)
{
pic_potentiels[ nb_decomposition ][ i_pic + nb_pics[nb_decomposition] ] = pic_potentiels[ 0] [ i_pic ];
}
nb_pics[nb_decomposition] = nb_pics[nb_decomposition] + nb_pics[0];
Je peux faire un tour de boucle.
J'arrive à afficher les valeurs signal_fen[j] et sig_pics [j] mais je ne peux pas faire un fprintf ( fic , " %f \n" ,signal_fen[j] ,sig_pics [j] ) ;
Il me dit :
Windows a déclenché un point d'arrêt dans StageM1.exe.
Cela peut être dû à une défaillance du tas qui indique un bogue dans StageM1.exe ou l'une des DLL chargées.
Cela peut également être dû à l'appui sur la touche F12 lorsque StageM1.exe a le focus.
La fenêtre Sortie peut contenir des informations de diagnostic supplémentaires.
La je vois vraiment pas
Aidez moi svp merci d'avance !!
Hésitez pas à poser des questions si vous ne comprenez pas mon problème