最好的解決辦法改變你有什麼喜歡的東西:
function [y, yr] = integrator(x, t, yr)
if nargin < 3
yr = []; % will behave identically to persistent when yr is not given
end
現在您可以重複調用爲:
[x,xr] = integrator(x, t);
[x,xr] = integrator(x, t, xr);
[y,yr] = integrator(x, t);
[y,yr] = integrator(x, t, yr);
雖然我不會推薦它,有一種方法保持您當前的實施並且近達到您想要的結果。通過清除函數可以清除持久變量。這將允許你「重置」的執着變量,這意味着調用順序應該工作:
x = integrator(x_dot, t);
clear integrator;
y = integrator(y_dot, t);
但是請注意,這可能不會產生預期的結果調用
x = integrator(x_dot, t);
clear integrator;
y = integrator(y_dot, t);
clear integrator;
x = integrator(x_dot, t);
而在當我建議的解決方案首先可以撥打
[x,xr] = integrator(x, t);
[y,yr] = integrator(x, t);
[x,xr] = integrator(x, t, xr);
[y,yr] = integrator(x, t, yr);
並且結果將保持預期狀態。