Как да намерим минимума на всяка точка на кривина?

Използвам напасване на полиномна крива, за да анализирам данните си (polyfit и polyval) и получих кривата по този начин. Искам да намеря минималната точка на всяка крива (червена точка). Ако използвам min(), ще получа точката само с една крива. Как да получите и двете точки?

Cure Fitting

Благодаря ти много


person Bow House    schedule 11.09.2013    source източник
comment
Можете да използвате findpeaks като използвате сигнала си с minus (-) или можете да погледнете тук, където създадох много основен локален скрипт за минимуми.   -  person Werner    schedule 11.09.2013
comment
Това може да не е по темата, съжалявам за това, но вашето прилягане изглежда всичко друго, но не и правилно. Сигурни ли сте, че трябва да използвате полиноми за напасване? Не можете ли да получите по-добри резултати с интерполация на кубичен сплайн?   -  person thewaywewalk    schedule 11.09.2013
comment
Съгласен съм с @thewaywewalk.... защо изобщо си пасваш? Неподходящото би било по-добро от това, което виждам на публикуваното изображение. Във всеки случай вярвам, че има функция findpeaks, която може да ви помогне.   -  person Buck Thorn    schedule 11.09.2013
comment
Обърнете данните и след това приложете findpeaks   -  person Buck Thorn    schedule 11.09.2013
comment
@thewaywewalk & Try Hard, моите предимно данни изглеждат като това, което видяхте в графиката и искам само данните на дясната крива, така че някой да ме посъветва да използвам настройка на кривата, за да я отделя. Благодаря ви за съвета.   -  person Bow House    schedule 11.09.2013
comment
@Werner Благодаря ви за отговора, ще опитам.   -  person Bow House    schedule 11.09.2013
comment
@BowHouse просто използвайте сплайн интерполация вместо полиноми и това ще реши проблема ви. След това можете също да приложите findpeaks по същия начин.   -  person thewaywewalk    schedule 11.09.2013
comment
@thewaywewalk добре, благодаря ти, ще опитам, както каза.   -  person Bow House    schedule 11.09.2013


Отговори (1)


просто:

% Your polynomial coefficients
c = [-1 4 5 2 6 2 4 5];

% Find real roots of its derivative
R = roots( [numel(c)-1 : -1 : 1] .* c(1:end-1) );
R = R(imag(R)==0);

% Compute and sort function values of these extrema
if ~isempty(R)

    [yExtrema, indsExtrema] = sort(polyval(c, R));
    xExtrema = R(indsExtrema);

    % Extract the two smallest ones
    yMins = yExtrema(1:2);
    xMins = xExtrema(1:2);

else
    yMins = [];
    xMins = [];

end
person Rody Oldenhuis    schedule 11.09.2013