只在变量中存储一个固定值一次
Store a fixed value in the variable only once
我的代码中有一个名为 p_fix 的变量。当PE>p时,需要保存这个变量的值。但是我这样做的方式,每次 PE>p 被尊重时,这个变量的值都会改变,我怎么能在 PE>p 时只保存它的值一次并且永远不会改变这个变量的值(p_fix)又是?
for n = 1:size(t,1)
if n>=4
X = [Ia(n-1,1) Ia(n-2,1) ; Ia(n-2,1) Ia(n-3,1)];
future = [Ia(n,1) ; Ia(n-1,1)];
C = X\future;
Ia_future(n,1) = C(1,1)*Ia(n,1)+C(2,1)*Ia(n-1,1);
PE(n,1)=Ia(n,1)+Ia_future(n,1);
p(n,1)=(1+0.2)*max(PE(n-1,1));
if PE(n-1,1)>p(n,1)
p_fix = p(n,1);
end
end
end
您可以:
在循环之前,初始化p_fix
为空数组,只有空数组才设置:
if isempty(p_fix) && PE(n-1,1)>p(n,1)
p_fix = p(n,1);
end
或使用第二个布尔变量,例如 done
,它会跟踪您是否设置了其他变量。在循环之前初始化为false
,然后:
if ~done && PE(n-1,1)>p(n,1)
p_fix = p(n,1);
done = true;
end
我的代码中有一个名为 p_fix 的变量。当PE>p时,需要保存这个变量的值。但是我这样做的方式,每次 PE>p 被尊重时,这个变量的值都会改变,我怎么能在 PE>p 时只保存它的值一次并且永远不会改变这个变量的值(p_fix)又是?
for n = 1:size(t,1)
if n>=4
X = [Ia(n-1,1) Ia(n-2,1) ; Ia(n-2,1) Ia(n-3,1)];
future = [Ia(n,1) ; Ia(n-1,1)];
C = X\future;
Ia_future(n,1) = C(1,1)*Ia(n,1)+C(2,1)*Ia(n-1,1);
PE(n,1)=Ia(n,1)+Ia_future(n,1);
p(n,1)=(1+0.2)*max(PE(n-1,1));
if PE(n-1,1)>p(n,1)
p_fix = p(n,1);
end
end
end
您可以:
在循环之前,初始化
p_fix
为空数组,只有空数组才设置:if isempty(p_fix) && PE(n-1,1)>p(n,1) p_fix = p(n,1); end
或使用第二个布尔变量,例如
done
,它会跟踪您是否设置了其他变量。在循环之前初始化为false
,然后:if ~done && PE(n-1,1)>p(n,1) p_fix = p(n,1); done = true; end