코드 조각에 문제가 있습니다.이중 새 연산자를 변환 할 수 없습니다.
mel[i] = malloc(sizeof(double)*mellength[i]);
: 나는 C 프로그램에서이 라인이
double *mel[16];
int mellength[16];
을 그리고 나는 그러나 나는 "새로운"연산자를 사용하고 C++에서이 작업을 수행 할 필요가 :
mel[i] = new double(sizeof(double)*mellength[i]);
을 장소 :
int *mellength = new int[16];
double *mel = new double[16];
그리고 다음 오류가 발생합니다.
error: cannot convert ‘double*’ to ‘double’ in assignment
전체 기능 :
이void setup_Mel(int fft_size, int sample_rate, int *melstart, int *mellength, double *mel)
{
double fmax;
double dphi;
double fsample;
double freq;
double temp[fft_size/2];
fmax=2595*log10(8000.0f/700+1);
dphi = fmax/17;
freq = (double)sample_rate/fft_size;
for(int i=0; (i < 13); i++)
{
melstart[i] = fft_size/2;
mellength[i] = 0;
memset(temp, 0, sizeof(double)*fft_size/2);
for(int j=0; (j < fft_size/2); j++)
{
fsample = 2595*log10(freq*j/700 + 1);
if((dphi * i <= fsample) && (fsample < dphi*(i+1)))
{
temp[j] = (fsample-dphi*i)/(dphi*(i+1)-dphi*i);
}
if ((dphi*(i+1) <= fsample) && (fsample < dphi*(i+2)))
{
temp[j] = (fsample-dphi*(i+2))/(dphi*(i+1)-dphi*(i+2));
}
if ((temp[j] != 0) && (melstart[i] > j))
{
melstart[i] = j;
}
if (temp[j] != 0) mellength[i]++;
}
mel[i] = new double(sizeof(double)*mellength[i]);
}
}
희망의 사람 :
'std :: vector <>'를 사용하십시오. – GManNickG