gpt4 book ai didi

c - SIMULINK 保持信号的先前值

转载 作者:太空宇宙 更新时间:2023-11-04 08:49:11 29 4
gpt4 key购买 nike

我正在尝试在 SIMULINK 中实现一个脉冲发生器,它需要知道前 2 个输入值,即我需要知道输入信号的前 2 个状态值。另外,我需要知道之前的输出值。

我的伪代码是:

IF !input AND  input_prevValue AND !input_prevValue2
output = !output_pv
ELSE
output = output_pv;

我知道我可以使用遗留函数导入器并使用 C 代码在 SIMULINK 中完成这项工作。但是,当您将配置引用集应用到您的模型时,问题就出现了。关键问题是灵 active 。当您在其他地方使用此模型时(比如与同事或任何人共享),除非您使用了配置引用集,否则您可以重建代码(即从 S-Function Block)并运行您的模型。但是,如果应用了配置引用集,则无法重建代码。

我的解决方案是以一种无需 C 函数即可执行相同操作的方式来实现逻辑。我试图在 SIMULINK 中使用内存块,但显然它没有这样做。有谁知道如何在 SIMULINK 中保存输入和输出的先前值(只要模型打开)?

最佳答案

您是否尝试过 MATLAB Function堵塞?或者,如果您拥有 Stateflow 许可证,这将很好地适用于状态图。

编辑

根据您的伪代码,我希望 MATLAB Function block 中的代码看起来像这样

function op = logic_fcn(ip,ip_prev,ip_prev2,op_prev)
% #codegen

if ~ip && ip_prev && ~ip_prev2
op = ~op_prev;
else
op = op_prev;
end

其中 ipip_previp_prev2op_prev 被定义为 bool 输入和 op 作为 bool 输出。如果您使用的是固定步长离散求解器,则内存块应该可以工作,例如,您可以将 MATLAB Function block 的输出馈送到内存块(具有正确的采样时间),并将内存块的输出馈送到MATLAB Function 模块的 op_prev 输入。

您可以(并且应该)首先在 MATLAB 中测试您的函数(和/或测试 Simulink 模型)以确保它可以正常工作并针对给定输入生成您期望的输出。

关于c - SIMULINK 保持信号的先前值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20287495/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com