Я подбираю данные в MATLAB, используя: modelFun = @(B,x) B(1) + (B(2)-B(1)).*(1-exp(-B(3)*x))
, который является функцией «однофазной ассоциации». Все входные данные представляют собой действительные целые числа от 0 до 100.
Подгонка выполняется с помощью B = lsqcurvefit(modelFun,start,nx,ny,lb,ub);
nx и ny - количество значений x и y, lb и ub - ограничения (результаты B1 и B2 должно быть от 0 до 100%, B3 не ограничен)
Все работает хорошо, но время от времени MATLAB возвращает ошибку:
Предупреждение: мнимые части сложных X и / или Y аргументов игнорируются.
В скрипте (строка xxx)
Что я понимаю из этого, так это то, что вывод соответствия удаляется из мнимых частей, а действительные числа сохраняются . Я действительно новичок в математике ie, но мое чутье подсказывает мне, что подгонка всегда должна давать реальные числа, по крайней мере, это то, что я хочу.
Теперь я просто хочу уметь определять автоматически, когда соответствие выводит мнимые числа, так что я могу отбросить эти результаты соответствия и отбросить их. Однако, поскольку MATLAB немедленно делает соответствующие выходные параметры реальными, мое решение проблемы, т.е. ., Проверить результат B на мнимые числа, не будет работать:
if ~isreal(B) %check whether any component in the fit outcome is imaginary
[actions, like delete the parameter B]
end
Любые идеи?