Функция интерполяции для min
у меня есть эта функция для интерполяции max , мне нужно создать такую же функцию для min .
Заранее спасибо
Что я уже пробовал:
float fInterpol2(float x, float x1, float y1, float x2, float y2) //interpolation function getMaxPowerPriority { // x = input from the sensor // x1, x2 = boundary condition of the sensor input. // y1, y2 = boundary condition of the desired output. float y; // desired output. y = (((y2 - y1) / (x2 - x1)) * (x - x1)) + y1; if(y > y1) y = y1; if(y < y2) y = y2; return y; }
CPallini
Что вы подразумеваете под "интерполяцией Макс" и "интерполяцией мин"?
Приведенная выше формула является линейной интерполяцией.
BaselAla
верно , но с помощью этой функции я получаю Ymax , как я могу получить Ymin??
спасибо за ваш ответ
CPallini
Нет. Эта функция просто масштабирует диапазон (x1,x2) до диапазона (y1,y2). Вы должны получить ymin (то есть y1), когда x <= x1; с другой стороны, вы должны получить ymax (то есть y2), когда x>=x2.
Кстати, я считаю, что пограничные проверки ошибочны. Они должны быть вместо этого
if ( y > y2 ) y = y2; if ( y < y1 ) y = y1;
BaselAla
я вам очень благодарен
CPallini
Добро пожаловать.
KarstenK
Вы должны добавить проверку здравомыслия для (x2 - x1) * (x - x1) != 0 перед делением!!!
CPallini
Проверка на вменяемость должна быть (x2 - x1) != 0;