Index exceeds matrix dimensions for 5 dimensional matrix
    5 views (last 30 days)
  
       Show older comments
    
Hi I have the following code with the error "Index exceeds matrix dimensions" on the line of the "if statement" and I can't figure out why?!
My code is
    for idx_number_panels = 1:length(number_panels) 
    for number_turbines = 1:2 % range of wind turbine units examined
        for number_batteries = 1:10 % range of battery units examined
            for h=2:25 %# hours
                for d = 1:number_of_days %# which day
                    n = h + 24*(d-1);
    hourly_surplus(idx_number_panels , number_turbines+1 ,number_batteries, h,d) =  (hourly_total_RES(idx_number_panels,number_turbines + 1,number_batteries, h,d))-hourly_annual_demand(n);% hourly power deficit (RES supply with demand)
                    if hourly_surplus(idx_number_panels, number_turbines+1 ,number_batteries, h,d)< 0 % zero out negative hourly deficit values (this is power surplus from RES)
                        hourly_surplus(idx_number_panels, number_turbines+1 ,number_batteries, h,d) = 0;
                        battery_position(idx_number_panels, number_turbines+1 ,number_batteries, h,d) = 0;
                        input_energy_flow(idx_number_panels, number_turbines+1 ,number_batteries, h,d) =  0;
                        output_energy_demand(idx_number_panels, number_turbines+1 ,number_batteries, h,d) =hourly_deficit(idx_number_panels, number_turbines+1 ,number_batteries, h,d) ;
                    else
                        battery_position(idx_number_panels, number_turbines+1 ,number_batteries, h,d) = 1;
                        input_energy_flow(idx_number_panels, number_turbines+1 ,number_batteries, h,d) =  hourly_surplus(idx_number_panels, number_turbines+1 ,number_batteries, h,d) ;
                    end
                    battery_capacity(:, : ,:, 1,1) = 2*number_batteries;
                   if   (max_battery_capacity*number_batteries) - (battery_capacity(idx_number_panels, number_turbines+1 ,number_batteries, h-1,d)) >0
storage_availability(idx_number_panels, number_turbines+1 ,number_batteries, h,d) = maybe(idx_number_panels, number_turbines+1 ,number_batteries, h,d) else
                        storage_availability(idx_number_panels, number_turbines+1 ,number_batteries, h,d) = 0;
                    end
2 Comments
Answers (1)
  Sean de Wolski
      
      
 on 27 Jul 2012
        dbstop if error
Then run the code using the play button or from the command line. It will stop with the debugger on the offending line with the offensive variables so you can figure out what's wrong.
6 Comments
See Also
Categories
				Find more on Characters and Strings 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!


