我尝试在MATLAB中模拟以下时间依赖函数:
其中γ、β和δ是常数。我不知道怎样做总结才是最好的。我可以创建u(t)和y(t)函数句柄,但symsum只能用于符号。我唯一的选择是使用for循环来手动添加y(t-i)和u(t-m)吗?到目前为止,我为生成y(t)所做的工作如下所示:
N = 100;
y_out = zeros(N,1);
u = zeros(N,1);
for t = 1:1:N
u(t) = cos(beta*t);
end
y_out(1) = NARMA(beta,delta,gamma,true);
for t=2:N
y_out(t) = NARMA(beta,delta,gamma);
end
function y_out = NARMA(beta,delta,gamma,first_call)
% Set first_call to true only the first time you call the function
persistent y
if nargin>3 && first_call
y = 0;
end
for i=1:1:m
y = y + gamma*u + delta;
end
y_out = y;
end
1条答案
按热度按时间rjjhvcjd1#
下面是一个不需要循环的可能解决方案(未测试):
编辑:
事实证明,上述解决方案是错误的。我认为这是正确的:
编辑2:
通过进一步简化,求和可以简化为一个简单的for循环: