Ma methode marche pour un vecteur et ne marche pour un autre vecteur !?
J’ai un problème avec c++ builder , j’ai fait une méthode qui fait la convolution entre deux vecteur quant je utilise un vecteur x ça donne des bon et correcte résultat et qu’ant je utilise un autre vecteur ça donne des résultat non valide ( je vérifier mai résultat avec matlab la fonction wconv1 de matlab ) je ne c’est pas ou est le problème , voila ma fonction :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
double signal[]={0.123,1.45,0.67};
//double x[]={0.1,1.4,1};
double x[]={
0 ,
0 ,
0 ,
0 ,
0 ,
0.0018 ,
-0.0045 ,
-0.1231 ,
0 ,
0.1231 ,
0.0045 ,
-0.0018 ,
0 ,
0 ,
0 ,
0 ,
0 };
int Nx=sizeof(signal)/7;
int Nh=sizeof(x)/4;
int mine =min(Nx,Nh);
int taill,taille1 ;
taill= Nx+Nh-1 ;
taille1=Nx+Nh;
int maxe =max(Nx,Nh);
double *code =new double[taill] ;
code[0]=signal[0]*x[0];
for(int k =1; k<taill ; k++)
for(int j =0; j<taille1 ; j++)
{
if ((k+1-j>0) && (k+1-j<=mine) && (j<maxe))
{
int a=k-j;
code[k]=code[k]+x[j]*signal[a];
}
}
ShowMessage("voila les résultat de la convolution\n");
ShowMessage(code[5]); |
Quant je utilise le premier X ça donne des bon resultat mai quant je itulise le deuxieme ça donne pas des bon resultat ?
Normalement dans les deux cas ça donne ça pour des bon resulat :
le premiers x :
Code:
1 2 3 4 5
| 0.0123
0.3172
2.2200
2.3880
0.6700 |
:
le deuxieme x
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
0
0
0
0
0
0.0003
0.0021
-0.0205
-0.1816
-0.0673
0.1791
0.0888
0.0004
-0.0013
0
0
0
0
0 |
mai ça marche que pour le premier et non pour le deuxieme ?!
une autre question c'est comment faire un agrendisement d'une valeur 1.789 > 1.79