Hi Members,
I have received C source code function. The function carries out interpolation of a speech siganl. But what is the name of this type of interpolation??? There are a number of different types of interpolation and I need to know the actual type of interpolation it performs:
Code:
float interpolate (float freq,double filter_curve_db [][2],int number_of_points) {
double result;
int i;
double freqLow, freqHigh;
double curveLow, curveHigh;
if (freq <= filter_curve_db [0][0]) {
freqLow = filter_curve_db [0][0];
curveLow = filter_curve_db [0][1];
freqHigh = filter_curve_db [1][0];
curveHigh = filter_curve_db [1][1];
result = ((freq - freqLow) * curveHigh + (freqHigh - freq) * curveLow)/ (freqHigh - freqLow);
return (float) result;
}
if (freq >= filter_curve_db [number_of_points-1][0]) {
freqLow = filter_curve_db [number_of_points-2][0];
curveLow = filter_curve_db [number_of_points-2][1];
freqHigh = filter_curve_db [number_of_points-1][0];
curveHigh = filter_curve_db [number_of_points-1][1];
result = ((freq - freqLow) * curveHigh + (freqHigh - freq) * curveLow)/ (freqHigh - freqLow);
return (float) result;
}
i = 1;
freqHigh = filter_curve_db [i][0];
while (freqHigh < freq) {
i++;
freqHigh = filter_curve_db [i][0];
}
curveHigh = filter_curve_db [i][1];
freqLow = filter_curve_db [i-1][0];
curveLow = filter_curve_db [i-1][1];
result = ((freq - freqLow) * curveHigh + (freqHigh - freq) * curveLow)/ (freqHigh - freqLow);
return (float) result;
}
Many Thanks if you can help.