Questa funzione è effettuata subito prima del for da cui elaboro la funzione logGAbor. Probabilmente puo' esserci qui un errore relazionato con la creazione di radius e theta.
matriz ----> typedef double** matriz;
Successivamente il matriz è allocato in una funzione che restituisce proprio un double** e riceve cols e rows. L allocazione è dinamica con new double*. Funziona bene
void pre_filter_Computations(matriz radius,matriz theta,int cols,int rows){
double X[rows][cols],Y[rows][cols];
double x[cols],y[rows];
double epsilon = 0.0001;
for(int i=0;i<cols;i++){
x[i]=((double)(i-cols)/2)/((double)cols/2);
}
for(int z=0;z<rows;z++){
y[z]=-(((double)(z-rows)/2)/((double)rows/2));
}
//MESHGRID
for(int m=0;m<rows;m++){ //Prima qui avevo cols nel meshgrid
for(int n=0;n<cols;n++){ //prima avevo rows qui nel meshgrid
X[m][n]=x[m];
Y[m][n]=y[n];
}
}
for(int a=0;a<rows;a++){
for(int b=0;b<cols;b++){
X[a][b] = pow(X[a][b],2);
Y[a][b] = pow(Y[a][b],2);
X[a][b] = X[a][b] + Y[a][b];
radius[a][b] = sqrt(X[a][b]);
}
}
radius[rows/2+1][cols/2+1]=1;
for(int a=0;a<rows;a++){
for(int b=0;b<cols;b++){
radius [a][b]= radius[a][b] + epsilon;
theta[a][b] = atan2(Y[a][b],X[a][b])*180/PI;
}
}
}
utilizzo del meshgrid da matlab:
[X,Y] = meshgrid(x,y) transforms the domain specified by vectors x and y into arrays X and Y, which can be used to evaluate functions of two variables and three-dimensional mesh/surface plots. The rows of the output array X are copies of the vector x; columns of the output array Y are copies of the vector y.
Avendo creato il vettore x generato dalle colonne ricevute nella funzione e y dalle righe, come è fatto nei primi due for della funzione, avevo messo nel for innestato prima un for relativo alle cols e poi uno relativo ai rows. cosi facendo mi veniva fuori che le righe e le colonne aumentavano vistosamente. In seguito cambiando e mettendo rows in precedenza ho risolto il problema della funzione anche se non sono sicuro che viene effettuato il meshgrid cosi come volevo. in effetti quel meshgrid crea due vettori bidimens che poi creeranno il mio radius che uso nella funzione in cui non posso entrare. magari l errore e creato in questa funzione proprio. Spero possiate aiutarmi e comuqnue grazie