错误使用matlabfunction和分段函数和间隔

12个视图(30天)
我使用符号工具箱和我试图使用命令生成一个matlab函数matlabfunction (gg)作为输入,gg是一个向量的分段函数如下:
gg =
分段(Dom×8::间隔(-10年,10),的混合体,10 < =×8 10×8 < = -10,-10)
x5
分段(10 <×8 |×8 < Dom: -10 1×8:间隔([-10],[10]),0)
分段(10 <×8 |×8 < Dom: -10 1×8:间隔([-10],[10]),0)
分段(80 < = t 1 symtrue 0)
其中t、x5和×8是象征性的变量。
当使用matlabfunction()命令,如下所示:
g = matlabFunction (gg,“var”{xNum t},“文件”,“genEqs / g”);
我得到以下错误和警告:
警告:间隔(“DOM_INTERVAL”“Dom:间隔”)不万博1manbetx支持。使用“0”元素。
错误使用symengine
不能生成的代码对象“t4的混合体”。
错误信谊/ matlabFunction > mup2mat(第404行)
res = mupadmex (“symobj:: generateMATLAB”r.s,另,水疗,0);
错误信谊/ matlabFunction > writeBody(第516行)
身体= mup2mat (eqnk,假,sparseMat);
错误信谊/ matlabFunction > writeMATLAB(第452行)
writeBody (fid, tvalues sparseMat);
错误信谊/ matlabFunction(第183行)
g = writeMATLAB (varnames乐趣、文件,输出、主体选择。优化选择。稀疏,opts.Comments);
错误在antiwindup_RUN_rrrr(第241行)
g = matlabFunction (gg,“var”{xNum t},“文件”,“genEqs / g”);
然而,如果我使用以下分段函数的向量,然后代码非常好工作。
gg =
分段(Dom×8::间隔(-10年,10),的混合体,10 < =×8 10×8 < = -10,-10)
x5
分段(10 <×8 |×8 < Dom: -10 1×8:间隔([-10],[10]),0)
分段(10.1 <×8 |×8 < -10.1,1×8在Dom:间隔([-10.1],[10.1]),0)
分段(80 < = t 1 symtrue 0)
这个的原因是什么?我想不出来。有办法绕过这个错误吗?
提前谢谢你。
尼古拉。

接受的答案

Uday普拉丹
Uday普拉丹 2021年5月25日
你好尼古拉斯,
指的是文档 matlabFunction ,你会发现存在一个参数称为“ 优化 ”。默认情况下,这个是设置为正确的。绕过上面的错误,您需要这个标志设置为0,因此:
信谊t x5的混合体;
vec =[分段(-10 < < 10×8×8 10 < =×8 10×8 < = -10,-10),
x5,分段(10 <×8 |×8 < -10,-10 < =×8 < = 10,0),
分段(10 <×8 |×8 < -10,-10 < =×8 < = 10,0),
分段(80 < = t 1 symtrue 0))
g = matlabFunction(矢量,“var”{x5×8 t},“文件”,g1的,“优化”,0);
注:以上时发生错误 matlabFunction 试图优化生成的代码 g1.m 。每当我们包括两个函数向量具有相同的域的定义与有限的端点(间隔(a, b)型(a, b), [a, b]或[a, b)),上述错误将生成 优化 国旗是打开的。

更多的答案(0)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!