在另一个分段函数分段函数作为条件

8视图(30天)
大家好,
我用符号数学工具箱来定义一个matlabFunction用于仿真软件。万博1manbetx
我有问题在评估的代码如下:
x =符号(“x”,(N - 1));
L = 100;
z (1, - 1) = (2) - x (1);%δx (N)
z(1, - 1) =分段(z (1) < 0 L + z (1) z (1) > = 0, z (1));
V(1,1) =分段(z (1) < = 3 0 3 < z (1) < 5, z (1), 10);
matlabFunction (V,“文件”,“函数”,“var”,{z});
原始代码更复杂,但这是一个简化版本。
我得到以下错误消息:
错误使用symengine
不能评估布尔。
错误信谊/ mupadmexnout(第1057行)
= mupadmex (fcn, args {:});
错误信谊/ matlabFunction >优化(第468行)
[tvalues f, tnames] = mupadmexnout (“symobj:: optimizeWithIntermediates”f: {});
错误信谊/ matlabFunction > writeMATLAB(第443行)
[f tvalues tnames] =优化(f, optim);
错误信谊/ matlabFunction(第183行)
g = writeMATLAB (varnames乐趣、文件,输出、主体选择。优化选择。稀疏,opts.Comments);
错误在主(第94行)
matlabFunction (V,“文件”,“函数”,“var”,{z});
(第94行)是指的什么地方我叫matlabFunction。
我不确定,但我想改变些什么,我认为给的问题是,在第二分段函数使用的评估另一个分段函数的输出,因为在第二分段函数使用z(1)从第一个分段。
你认为它可能是问题吗?因为如果我交换订单不能两个分段函数。不幸的是我想评估z(1),然后修改它之前评估V (1)。
z(1)是一个象征性的变量,但也许并不喜欢它,因为从1日分段z(1)是一个分段函数,是不好的用它来评估另一个分段的条件。
我试图使用一个替代第二分段,实现饱和函数,但我不知道如果有另一种方式,也许更聪明。你怎么认为?
提前谢谢你

接受的答案

沃尔特·罗伯森
沃尔特·罗伯森 2020年11月28日
matlabFunction (V,“文件”,“函数”,“var”,{x});
为我工作。你不能使用z var matlabFunction因为你需要独立变量的名称列表。
警告:在最近的版本中,优化了matlabFunction写入文件中默认情况下坏了。之前是固定我建议关闭优化:
matlabFunction (V,“文件”,“函数”,“var”{x},“优化”,0);
注意:当你使用一个表达式,包括分段matlabFunction()生成的代码 矢量化的任何变量出现在分段()条件测试。
5个评论

登录置评。

更多的答案(0)