У меня есть массив с данными о положении тела
Пусть A - это массив с данными о положении тела (вектор 218 * 1)
I нужно приблизить этот массив к функции x (1) * exp (x (2) * t) * cos (x (3) * t + x (4)). Для этого нам нужно минимизировать norm(x(1)*exp(x(2)*t)*cos(x(3)*t+x(4))-A)
от x и найти x (1), x (2), x (3), x (4).
Для этого я написал в Matlab:
point=load('point5.txt');%array with body position data
tk=linspace(0,218/29,218);%moments of time for the approximation function, 29 this is frequency
fun = @(x)norm(x(1)*exp(x(2)*tk')*cos(x(3)*tk'+x(4))-point);
x0 = [0,0,4,0];
A = [1,1,1,1];
b = 7;
x = fmincon(fun,x0,A,b)
Но есть некоторые ошибки:
Ошибка при использовании * Внутренние размеры матрицы должны совпадать.
Ошибка в точке 5> @ (x) норма (x (1)) * exp (x (2) * tk ') * cos (x (3) * tk' + x (4)) - точка)
Ошибка в fmincon (строка 534) initVals.f = feval (funfcn {3}, X, varargin {:});
Ошибка в точке 5 (строка 9) x = fmincon (fun, x0, A, b)
Причина: ошибка исходного пользователя поставленная целевая функция оценки. FMINCON не может продолжить.
Я не понимаю, что не так, размеры tk и point одинаковы
Пожалуйста, помогите. Как я могу минимизировать f (x, tk) только x? Если вам известен вариант реализации Python, это также будет очень полезно