Я вычислил аналитическое решение проблемы, используя набор инструментов символьной математики. Теперь я могу решить проблему с помощью следующей функции 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 распознал ее как числовую.
СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ