Если уравнение действительно настолько длинное, что вы не хотите проходить вручную, один вариант, который вы могли бы рассмотреть для переформатирования уравнения, чтобы сделать его более удобным для C ++, - это проанализировать текст кода MATLAB для уравнения, используя REGEXPREP функция в MATLAB. Вот пример того, как можно заменить выражения вида x^2
или y.^3
на pow(x,2)
или pow(y,3)
:
eqStr = 'the text of your equation code'; %# Put your equation in a string
expr = '(\w+)\.?\^(\d+)'; %# The pattern to match
repStr = 'pow($1,$2)'; %# The replacement string
newStr = regexprep(eqStr,expr,repStr); %# The new equation string
Вам просто нужно взять код для вашего уравнения MATLAB и сначала поместить его в строковую переменную eqStr
. Выходные данные REGEXPREP будут тогда текстом для вашего нового дружественного C ++ уравнения newStr
.
Вы также можете изменить строку замены, чтобы получить результаты в форме x*x
или y*y*y
, используя динамические операторы . Например:
eqStr = 'the text of your equation code'; %# Put your equation in a string
expr = '(\w+)\.?\^(\d+)'; %# The pattern to match
repStr = '${repmat([$1,''*''],1,$2-''0''-1)}$1'; %# The replacement string
newStr = regexprep(eqStr,expr,repStr); %# The new equation string