【发布时间】: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 useias 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