Why does the first value in loop get overwritten
    7 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
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 comentarios
Respuesta aceptada
  per isakson
      
      
 el 8 de Dic. de 2012
        
      Editada: per isakson
      
      
 el 8 de Dic. de 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 comentarios
Más respuestas (2)
  Richard
      
 el 8 de Dic. de 2012
        
      Editada: Richard
      
 el 8 de Dic. de 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 comentarios
Ver también
Categorías
				Más información sobre Workspace Variables and MAT Files en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


