You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Simulink函数模块中如何逐时间步更新温度参数至阈值?

Simulink函数模块实现温度逐时间步更新解决方案

问题根源

你当前的代码存在两个核心问题:

  • 每次调用函数时都会将T重置为20,无法保留上一个时间步的温度值
  • while循环会在单次函数调用内直接完成所有升温操作,不符合"逐时间步更新"的要求

修正后的代码

function [delta_T,T] = fcn(u)
    persistent T_current  % 用持久变量保存温度状态,跨时间步保留值
    m = 100;
    T_max = 100;
    
    % 初始化:仅在第一次调用时设置初始温度
    if isempty(T_current)
        T_current = 20;
    end
    
    delta_T = u/m;
    
    % 逐时间步更新温度,达到最大值后停止
    if T_current < T_max
        T_current = T_current + delta_T;
        % 防止超过最大值
        if T_current > T_max
            T_current = T_max;
        end
    end
    
    T = T_current;  % 输出当前温度
end

关键说明

  • 使用persistent关键字声明T_current,让变量在函数多次调用(即不同时间步)之间保留值,不会每次重置
  • 去掉了while循环,改为每个时间步判断一次:如果当前温度未达最大值,就更新一次;达到后不再变化
  • 增加了上限判断,避免温度超过T_max

额外注意事项

  • 若需要重置温度,可在Simulink中添加触发信号,或者在函数中增加重置逻辑(比如新增一个输入参数控制重置)
  • 如果ΔT是固定值10,直接把delta_T = 10替换掉delta_T = u/m即可

内容的提问来源于stack exchange,提问作者Ameen Mohamed Bassam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 18:22:01