变量 在循环中被多次赋值,但是最后只返回了最后一次赋值的结果
时间: 2024-02-09 12:08:40 浏览: 74
Python基础知识总结笔记(二)
是的,你说得对。在该函数中,变量 `o` 在 `for` 循环中被多次赋值,但是在循环结束后,只返回了最后一次赋值的结果。这意味着前面的计算结果被丢失了,而只保留了最后一次的结果。
如果你想要返回所有循环中的计算结果,你可以将 `o` 定义为一个空向量,在循环中使用 `o(end+1)` 将每一次计算的结果添加到向量的末尾。循环结束后,返回整个向量即可。例如:
```
function o = fobj(x)
pload1 = [2.47692307692308;2.55384615384615;3.01923076923077;3.65384615384615;4.18076923076923;4.53846153846154;4.27307692307692;4.07692307692308;4.57307692307692;4.74615384615385;4.90769230769231;4.57307692307692;4.46923076923077;4.14615384615385;3.38461538461539];
pw1 = [0.300000000000000;0.334615384615385;0.300000000000000;0.0346153846153846;0;0.184615384615385;0.242307692307692;0.250000000000000;0.196153846153846;0.219230769230769;0.346153846153846;0.507692307692308;0.557692307692308;0.588461538461538;0.619230769230769];
pw2 = 0.3 .* pw1 + 0.5;
pv1 = 0.02 .* [39.61 49.64 88.62 101.59 66.78 110.46 67.41 31.53 25.6 22.08 8.07 0 0 0 0];
pv2 = 0.015 .* [39.61 49.64 88.62 101.59 66.78 110.46 67.41 31.53 25.6 22.08 8.07 0 0 0 0];
lina = sum(pload1 - pv1 - pv2 - pw1 - pw2 + x) / 24;
o = [];
for i = 1:15
lina_i = sum(pload1(i) - pv1(i) - pv2(i) - pw1(i) - pw2(i) + x) / 24;
o(end+1) = (pload1(i) - pv1(i) - pv2(i) - pw1(i) - pw2(i) + x - lina_i) .^ 2 / 24;
pv1(i) + pv2(i) + pw1(i) + pw2(i) == pload1(i) + x;
end
end
```
这样,函数将返回一个包含所有计算结果的向量。
阅读全文