Я хотел бы создать функцию MATLAB с векторными входами. Проблема в том, что входные данные функции, созданной функцией matlabFunction (), имеют только скалярные входные данные.
x = sym('x',[2 1]);
y = sym('y',[2 1]);
f=x(1)+x(2)+y(1)+y(2);
matlabFunction(f,'file','testFunction.m');
matlabFunction(f,'file','testFunction.m','vars',[x,y]); % tried with different options but doesn't work
Это результат (с x1, x2, y1, y2 вместо x, y):
function f = testFunction(x1,x2,y1,y2)
%TESTFUNCTION
% F = TESTFUNCTION(X1,X2,Y1,Y2)
% This function was generated by the Symbolic Math Toolbox version 8.2.
% 10-Apr-2019 21:28:40
f = x1+x2+y1+y2;
Есть ли решение этой проблемы в MATLAB? Или мне нужно написать программу, открывающую файл в формате txt и заменяющую слова ...
Обновление: мне удалось решить проблему. Для меня лучшим решением является функция odeToVectorField ().
Вручную сложнее дать векторные входные данные для функции, созданной matlabFunction (). Одним из способов является следующее:
syms y;
f=str2sym('y(1)+y(2)');
matlabFunction(f,'File','fFunction','Vars',y);
С помощью этого метода вам нужно манипулировать уравнением в виде строки (что возможно, но не практично ...), а затем преобразовать его в символьное выражение.