matlab - 如何在 Simulink Matlab 功能 block 中使用 syms

标签 matlab simulink anonymous-function symbolic-math

我想解expm(A*s)的积分之间ab+tau ,其中 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 , ab之前被定义。但是有一个问题:函数syms simulink 不支持。

关于如何处理积分的任何想法?我试过
coder.extrinsic('syms');

但它不起作用。

感谢您的任何建议!

最佳答案

最有用的方法:

我们不能在 Simulink 中使用符号变量和匿名函数。但是我们可以为 out 函数创建另一个 .m 文件并将其加载到 Simulink 中的 Matlab Function Block 中:

myIntegral.m

    function out = myIntegral(in)
    A = [1 2 3; 4 5 6; 7 8 9];
    myfun = @(s) expm(A.*s);
    out = integral(myfun,0,in,'ArrayValued',true);
    end

Matlab 功能块代码:
function y = fcn(u)
%#codegen
coder.extrinsic('myIntegral');
y = zeros(3);
y = myIntegral(u);

有用:
enter image description here

附言顺便说一句 - 我试过了
syms s1

并且这里没有错误,但是Simulink还是不能用这个s1多变的:

Undefined function or variable 's1'.

关于matlab - 如何在 Simulink Matlab 功能 block 中使用 syms,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42271181/

相关文章:

arrays - isnan 索引

java - 解析 Simulink 模型

simulink - SIMULINK 和 LabVIEW 之间的广泛比较

javascript - JavaScript 中匿名函数的 removeEventListener

user-interface - 计算 MATLAB uicontrol 所需的实际大小

matlab - guidata 未在 MATLAB GUI 中更新

javascript - $ ("selection") 和 $ ("selection", $(this)) 有什么区别

c# - 匿名类型的属性列表

performance - 在matlab中对矩阵元素求和的有效(最快)方法

matlab - 如何汇总所有实体的属性值