Why does the first value in loop get overwritten
    7 views (last 30 days)
  
       Show older comments
    
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);
    load (['res_us_v15_',num2str(T),'_',num2str(100*F)]) 
    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
0 Comments
Accepted Answer
  per isakson
      
      
 on 8 Dec 2012
        
      Edited: per isakson
      
      
 on 8 Dec 2012
  
      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.
0 Comments
More Answers (2)
  Richard
      
 on 8 Dec 2012
        
      Edited: Richard
      
 on 8 Dec 2012
  
      Try
Fi = [0,0.8:0.05:1];
T = 160;
NPV_list = NaN(length(Fi),1);
for fi = 1:length(Fi);
    F = Fi(fi);
    load (['res_us_v15_',num2str(T),'_',num2str(100*F)]) 
    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 Comments
See Also
Categories
				Find more on Workspace Variables and MAT Files in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

