Why does the first value in loop get overwritten

2 ビュー (過去 30 日間)
Sargondjani 2012 年 12 月 8 日
For some reason when fi == 1, NPV_list(1,1) is inserted correctly, but when fi=2 the value gets overwritten, which i dont understand... at all. This is the code:
clear all;
clc;
Fi = [0,0.8:0.05:1];
T = 160;
NPV_list = NaN(length(Fi),1);
for fi = 1:length(Fi);
fi
F = Fi(fi);
NPV_list(fi,1) = us.sim.NPV_Pb_Wlth_avg
clearvars -except NPV_list Fi T;
end
Can someone explain this? This is the output for first 2 iterations:
fi =
1
NPV_list =
9.9570
NaN
NaN
NaN
NaN
NaN
fi =
2
NPV_list =
9.8664
NaN
NaN
NaN
NaN
NaN

サインインしてコメントする。

採用された回答

per isakson 2012 年 12 月 8 日

No, I cannot explain. However, what else is in the files you load? The clearvars looks scary to me.
My function, cssm, works:
>> cssm()
ans =
101 102 103 104 105 106
where
function NPV_list = cssm()
Fi = [0,0.8:0.05:1];
T = 160;
us = [ 101 : 109 ];
NPV_list = NaN(1,length(Fi));
for fi = 1:length(Fi);
fi;
F = Fi(fi);
NPV_list(1,fi) = us(fi);
clearvars -except NPV_list Fi T us;
end
end
.
Doc says:
S = load( filename, variables );
Try
S = load( filename, 'us' );
and remove clearvars.
Last, check whether there is a variable in the loaded file that explains the behavior you see.

サインインしてコメントする。

その他の回答 (2 件)

Richard 2012 年 12 月 8 日

Try
Fi = [0,0.8:0.05:1];
T = 160;
NPV_list = NaN(length(Fi),1);
for fi = 1:length(Fi);
F = Fi(fi);
NPV_list(fi,1) = us.sim.NPV_Pb_Wlth_avg
end
clearvars -except NPV_list Fi T;
I wouldn't clear the variables until after the loop. It might be the case that by clearing Fi and T, it cannot read it for loop 2 thus no output.

0 件のコメント

サインインしてコメントする。

Sargondjani 2012 年 12 月 9 日
Thanks guys... normally i never save iteration variables like 'fi' but in this case the files contained "fi = 1". very silly

サインインしてコメントする。

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by