【问题标题】:For loop model SimulinkFor 循环模型 Simulink
【发布时间】:2014-03-17 11:05:13
【问题描述】:

我想在 Simulink 中建模一个 for 循环系统,我如何将以下 MATLAB 语法建模到 Simulink em> 型号?

N=3;
    for    i=0:1:N
    sum(i+1)=factorial(i)/factorial(N);  
    end

我已经尝试过 Simulink 中的循环子系统以及 Sum 块 中的迭代循环,但对我没有帮助。 factorial 函数可以用 FCN 函数计算。 建议我用步进时间解决这个模型的方法。

【问题讨论】:

  • 我建议您将(在 Matlab 中)factorial(i)/facrorial(N) 更改为 1/prod(i+1:N)。这将节省计算以避免溢出(如果N 很大)。还有,最好not to use i as a variable name
  • 好的,这似乎是一种非常有效的方法,如果我有,如何保存计算,factorial(N)/(factorial(i)*factorial(N-i))?另外,我怎样才能避免产生效率的虚单位?
  • for ii=替换for i=;并将factorial(N)/(factorial(i)*factorial(N-i)) 替换为prod((N-ii+1:N)./[1:ii])
  • sum(ii+1) 还在吗?会影响性能吗?
  • 这可以很容易地使用 MATLAB 功能块来完成,但是由于输出中的元素数量取决于 N 的值(我假设它并不是真正硬编码为 3,而是可以在模拟过程中改变)你需要使用可变大小的信号。在文档中搜索该术语以了解如何定义它们。

标签: matlab for-loop model simulink factorial


【解决方案1】:

如果您在 matlab 中已有代码,请使用嵌入式 matlab 函数在您的 simulink 模型中实现它。这通常非常有效,因为它将被编译(与解释的 matlab 功能块相比)

【讨论】:

    猜你喜欢
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 2021-03-04
    • 2021-02-10
    • 2012-07-25
    相关资源
    最近更新 更多