【问题标题】:How to initialize a variable in a user defined MATLAB function(simulink)如何在用户定义的 MATLAB 函数中初始化变量(simulink)
【发布时间】:2016-09-06 08:46:12
【问题描述】:

我正在尝试使用户定义的函数是 simulink,它看起来像这样

 function [minTR,maxTR,out] = Temperature(u)
    [minTR] = min(u);
    [maxTR] = max(u);
    if((maxTR - minTR > 1.5))
        out = 1;
    else 
        out = 0;
    end
    end

u 是每个采样时间的 1200x1 数组,现在我想要的问题是,如果这个条件 if((maxTR - minTR > 1.5)) 成立,我希望 out 保持 1,直到最大值和最小值之间的差小于假设 0.7 ,我的计划是设置一个 flag ,我将其设置为 1 ,所以我的 else 代码看起来像

    else if((maxTR - minTR < 1.5) && flag == 0)
        out = 0;
    end

但问题是初始化,我必须初始化这个标志一次,但是 simulink 为每个采样时间运行整个函数,并且标志会一次又一次地重新初始化,有谁知道我能做些什么来实现这一点?

【问题讨论】:

  • 您所做的是串联比较和滞后。使用现成的积木。

标签: matlab function user-defined-functions simulink


【解决方案1】:

正如 cmets 中提到的 percusse,您应该查看 Simulink 库中已经存在的模块(比较 + 滞后)。

一般来说,Matlab/Simulink 中的变量初始化可以用persistent 变量来解决。

persistent flag

% If first run. Initialize flag.
if isempty(flag)
   flag = false;
end

另一种方法是使用delay block 接收前一个采样周期的输出信号,该delay block 可以用一个值进行初始化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多