如果我在构造系统对象后在脚本中使用step(sys,x),则整个x作为向量传递给stepimpl,而不是通过样本输入进行采样。 另一方面,如果我执行步骤(sys,s),其中s是标量而是迭代这行代码,那么' sys'每次调用步骤都会重置。
例如:
SFTRLS_obj = SFTRLS;
for i = 1 : N
step(SFTRLS_obj,d_dx(i),dx(i));
end
在脚本中使用系统对象的正确方法是什么?'传播'将样本输入系统对象?
答案 0 :(得分:0)
你应该进行迭代循环并在迭代循环中调用步骤。如果要使用System对象重用代码,则应使用函数。在函数中,您应该将System对象声明为持久性,并创建一次,如下面的代码所示。这将创建一次System对象,并使每次调用中的状态保持起作用。
function y = useSystemObjects(u)
persistent obj
if isempty(obj)
% Create System object once
obj = MySystemObject;
end
y = step(obj, u);
%使用MATLAB命令行中的上述功能
data = rand(100,1);
y = zeros(100,1);
for n=1:100
y(ii) = useSystemObjects(data(ii));
end
如果使用脚本,则会在每次调用脚本时重新创建对象,从而破坏状态。