Я вычислил аналитическое решение проблемы, используя набор инструментов символьной математики. Теперь я могу решить проблему с помощью следующей функции MATLAB.

function y  = symbolicFunction(x0,x1,x2,x3,x4,x5)
syms z
y = vpa(root(z^6 - z^4*(- 300*x2*x5 + 450*x2^2 + 450*x5^2) - z^3*(7200*x2*x1 + 4800*x2*x4 - 4800*x5*x1 - 7200*x5*x4) - z^2*(18000*x2*x0 - 18000*x2*x3 - 18000*x5*x0 + 18000*x5*x3 + 50400*x1*x4 + 28800*x1^2 + 28800*x4^2) - z*(144000*x1*x0 - 144000*x1*x3 + 144000*x4*x0 - 144000*x4*x3) + 360000*x0*x3 - 180000*x3^2 - 180000*x0^2, z, 1));
end

Я хочу реализовать это решение в модели Simulink, но я не могу напрямую добавить эту функцию в Simulink. Наиболее важные состояния ошибок

Function 'syms' not supported for code generation.

Я пытался:

  • Пытался написать аналитическое решение так, чтобы оно не требовало символьного набора инструментов, но мне это не удалось.
  • Компиляция функции в C-код, но syms, root() и vpa() не поддерживаются для генерации кода.

Есть ли способ заставить эту функцию или эквивалент работать в simulink?

ОТВЕЧАТЬ

Matlabsolutions.com предоставляет последнюю Помощь по домашним заданиям MatLab, Помощь по заданию MatLab для студентов, инженеров и исследователей в различных отраслях, таких как ECE, EEE, CSE, Mechanical, Civil со 100% выходом. Код Matlab для BE, B.Tech , ME, M.Tech, к.т.н. Ученые со 100% конфиденциальностью гарантированы. Получите проекты MATLAB с исходным кодом для обучения и исследований.

Я решил эту проблему с помощью coder.extrinsic, по сути, у меня есть следующая функция в simulink

function output  = symbolicFunctionSimulink(x0,x1,x2,x3,x4,x5)
coder.extrinsic('symbolicFunction');
output = 0; % initializing output
output = symbolicFunction(x0,x1,x2,x3,x4,x5);
end

и пришлось изменить мою symbolicFunction.m так, чтобы simulink распознал ее как числовую.

СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ