#include "datafunc.h" int cal_2d_hx(char* inname,char* outname,char* colname,double* range,double* interval,int power) { ifstream infile(inname); if (!infile) { cout< "< "<> temp_d) { tempRow.push_back(temp_d); } temp_x = tempRow.at(cols[0]); temp_y = tempRow.at(cols[1]); temp_z = tempRow.at(cols[2]); if (temp_x>=xmin&&temp_x<=xmax&&temp_y>=ymin&&temp_y<=ymax) { tabledata[int ((temp_y-ymin)/dy)][int ((temp_x-xmin)/dx)] = temp_z; } } } infile.close(); for (int i = 0; i < N; i++) endmean[i] = (tabledata[0][i]+tabledata[M-1][i])/2.0; for (int i = 0; i < N; i++) { for (int k = 0; k < M_ex_down; k++) { tabledata_ex[k][N_ex_left+i] = endmean[i] + (tabledata[0][i]-endmean[i])*cos(-0.5*pi*(k-M_ex_down)/M_ex_down); } for (int k = 0; k < M; k++) { tabledata_ex[M_ex_down+k][N_ex_left+i] = tabledata[k][i]; } for (int k = 0; k < M_ex_up; k++) { tabledata_ex[M_ex_down+M+k][N_ex_left+i] = endmean[i] + (tabledata[M-1][i]-endmean[i])*cos(0.5*pi*(k+1)/M_ex_up); } } for (int i = 0; i < M_ex; i++) endmean2[i] = (tabledata_ex[i][N_ex_left]+tabledata_ex[i][N_ex_left+N-1])/2.0; for (int i = 0; i < M_ex; i++) { for (int k = 0; k < N_ex_left; k++) { tabledata_ex[i][k] = endmean2[i] + (tabledata_ex[i][N_ex_left]-endmean2[i])*cos(-0.5*pi*(k-N_ex_left)/N_ex_left); } for (int k = 0; k < N_ex_right; k++) { tabledata_ex[i][N_ex_left+N+k] = endmean2[i] + (tabledata_ex[i][N_ex_left+N-1]-endmean2[i])*cos(0.5*pi*(k+1)/N_ex_right); } } fftw_complex *in, *out, *after_out, *reout; fftw_plan p; in = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * M_ex * N_ex); out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * M_ex * N_ex); after_out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * M_ex * N_ex); reout = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * M_ex * N_ex); for (int i = 0; i < M_ex; i++) { for (int j = 0; j < N_ex; j++) { in[i*N_ex+j][0] = tabledata_ex[i][j]; in[i*N_ex+j][1] = 0; } } p=fftw_plan_dft_2d(M_ex, N_ex,in , out, FFTW_FORWARD, FFTW_ESTIMATE); fftw_execute(p); int half_M_ex = M_ex/2; double du = 1.0/((M_ex-1)*dx); int k; for (int i = 0; i < N_ex; i++) { for (int j = 0; j < half_M_ex; j++) { k = M_ex - 1 - j; V[j][i] = du*j; V[k][i] = -1*du*j; } } for (int i = 0; i < M_ex; i++) { for (int j = 0; j < N_ex; j++) { after_out[i*N_ex+j][0] = out[i*N_ex+j][1]*pow(2*pi*V[i][j],power); after_out[i*N_ex+j][1] = out[i*N_ex+j][0]*pow(2*pi*V[i][j],power); } } p=fftw_plan_dft_2d(M_ex, N_ex, after_out, reout, FFTW_BACKWARD, FFTW_ESTIMATE); fftw_execute(p); for (int i = 0; i < M_ex; i++) { for (int j = 0; j < N_ex; j++) { tabledata_ex[i][j] = 0.1*reout[i*N_ex+j][0]/(M_ex*N_ex); } } ofstream outfile(outname); for (int i = 0; i < M; i++) { for (int j = 0; j < N; j++) { outfile<