BaselAla Ответов: 0

Функция интерполяции для 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;

0 Ответов