我想解决 a
和 b+tau
之间 expm(A*s)
的积分,其中 tau
是时变延迟 .
我在Simulink中创建了一个带有 tau
作为输入的Matlab功能块,如下所示:
function y = compute_int(u, tau)
syms s
gamma=double(int(expm(A*s),s,a,b+tau));
B = [gamma; 1]
y = B*u;
之前定义了 A
, a
和 b
. 但是有一个问题:simulink不支持函数 syms
.
有关如何处理积分的任何想法?我试过了
coder.extrinsic('syms');
但它不起作用 .
谢谢你的任何建议!!
1 回答
最有用的方式:
我们不能在Simulink中使用符号变量和匿名函数 . 但是我们可以为out函数创建另一个.m文件并将其加载到Simulink中的Matlab功能块中:
myIntegral.m
Matlab功能块代码:
它有效:
附:顺便说一下 - 我试过了
并且这里没有错误,但Simulink仍然无法使用此
s1
变量: