Matlab 如何在Simulink中求解一组方程?

Matlab 如何在Simulink中求解一组方程?,matlab,simulink,equation,symbolic-math,Matlab,Simulink,Equation,Symbolic Math,我需要解一组三个方程,其中有两个解。由于“syms”在Simulink库块中不起作用,我创建了一个.m函数来解方程。但是,当我尝试使用coder.extrinsic调用此函数时,会出现错误“对coder.extrinsic的调用可能仅出现在顶层”,我认为这是由于调用位于“if”循环中 我不能将调用移到顶层,因为我只在循环的“else”部分定义了方程的变量。这个else循环也是另一个if循环的一部分。我已经在下面展示了.m函数。变量OMX、OMY、CX、CY、Target(1)和Target(2)

我需要解一组三个方程,其中有两个解。由于“syms”在Simulink库块中不起作用,我创建了一个.m函数来解方程。但是,当我尝试使用coder.extrinsic调用此函数时,会出现错误“对coder.extrinsic的调用可能仅出现在顶层”,我认为这是由于调用位于“if”循环中

我不能将调用移到顶层,因为我只在循环的“else”部分定义了方程的变量。这个else循环也是另一个if循环的一部分。我已经在下面展示了.m函数。变量OMX、OMY、CX、CY、Target(1)和Target(2)因代码所采用的路径而异

还有别的办法吗

function [c] = Planner_Circles
% Create set of equations to define possible tangent circles between defined circle and target
syms xt yt rt; 
eqn1 = (xt-OMX)^2 + (yt-OMY)^2 == (rt-OMR)^2;
eqn2 = (xt-CX)^2 + (yt-CY)^2 == (rt+R)^2;
eqn3 = (xt-Target(1))^2 + (yt-Target(2))^2 == rt^2;
sol = vpasolve([eqn1, eqn2, eqn3], [xt, yt, rt]);
xSol = sol.xt;
ySol = sol.yt;
rSol = sol.rt; 
% This gives two solutions
rt=((rSol(1)));                                                            
xt=((xSol(1)));
yt=((ySol(1)));
rt2=((rSol(2)));
xt2=((xSol(2)));
yt2=((ySol(2)));   
% Choose largest radius for minimal curvature 
if rt<rt2;    
rt=rt2;
xt=xt2;
yt=yt2;
函数[c]=规划师
%创建一组方程式,以定义定义的圆和目标之间可能的相切圆
syms xt yt rt;
方程1=(xt OMX)^2+(yt OMY)^2=(rt OMR)^2;
方程n2=(xt-CX)^2+(yt-CY)^2=(rt+R)^2;
方程3=(xt目标(1))^2+(yt目标(2))^2==rt^2;
溶胶=vpasolve([eqn1,eqn2,eqn3],[xt,yt,rt]);
xSol=sol.xt;
ySol=sol.yt;
rSol=sol.rt;
%这就给出了两种解决方案
rt=((rSol(1)));
xt=((xSol(1)));
yt=((ySol(1)));
rt2=((rSol(2)));
xt2=((xSol(2)));
yt2=((ySol(2)));
%为最小曲率选择最大半径

如果RTR,代码中的coder.extrinsic在哪里?您可以在任何地方调用实际函数。但是您需要在顶层使用coder.extrinsic声明函数。最初,我在“if”循环中进行了调用,这返回了错误,“对coder.extrinsic的调用可能只出现在顶层”,因此,我将调用移到了代码的顶部,但这为我的所有符号变量返回了错误“undefined function或variable”。我会将所有相关的符号函数和变量移到一个外部函数,并声明整个函数为外部函数。coder.extrinsic在代码中的位置是什么?您可以在任何地方调用实际函数。但是您需要在顶层使用coder.extrinsic声明函数。最初,我在“if”循环中进行了调用,这返回了错误,“对coder.extrinsic的调用可能只出现在顶层”,因此,我将调用移到了代码的顶部,但这会为我所有的符号变量返回错误“undefined function或variable”。我会将所有相关的符号函数和变量移到外部函数,并将整个函数声明为外部函数。