Grazie per la risposta.
Ho modificato la funzione:
In questo modo compila ma il risultato non è quello corretto (inserendo il codice direttamente nel main senza inserirlo in una funzione mi dà il risultato atteso).codice:double **Covarianza (int N_campioni , double **colonna , double *mu) { //double sigma[3][3] = { 0,0,0,0,0,0,0,0,0 }; double **sigma; sigma = new double *[3]; for ( int h=0 ; h < 3 ; h++ ) sigma[h] = new double [3]; double parz[3][3] = { 0,0,0,0,0,0,0,0,0 }; for ( int j=0 ; j < N_campioni ; j++ ) { for ( int i=0 ; i < 3 ; i++ ) colonna[j][i] = colonna[j][i] - mu[i]; for ( int m=0 ; m < 3; m++ ) // prodotto vettore colonna per se stesso trasposto for ( int n=0 ; n < 3 ; n++ ) parz[m][n] = colonna[j][m] * colonna[j][n]; for ( int g=0 ; g < 3 ; g++) // aggiorno sigma con le matrici dei risultati parziali for ( int h=0 ; h < 3 ; h++ ) sigma[g][h] = sigma[g][h] + parz[g][h]; } for ( int m=0 ; m < 3; m++ ) for ( int n=0 ; n < 3 ; n++ ) sigma[m][n] = sigma[m][n] / N_campioni; return sigma; for ( int h=0; h < 3 ; h++ ) delete sigma [h]; delete sigma; }
Non capisco se continuo a sbagliare questa funzione o come la utilizzo nel main:
Grazie ancora.codice:double **covarianza; covarianza = Covarianza ( righe , featureTR_in , media );

Rispondi quotando