Index exceeds matrix dimensions for 5 dimensional matrix

1 回表示 (過去 30 日間)
Andrew Alkiviades
Andrew Alkiviades 2012 年 7 月 27 日
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 件のコメント
Albert Yam
Albert Yam 2012 年 7 月 27 日
Which line is the error on?
Andrew Alkiviades
Andrew Alkiviades 2012 年 7 月 27 日
the error is on the if statement
if (max_battery_capacity*number_batteries) - (battery_capacity(idx_number_panels, number_turbines+1 ,number_batteries, h-1,d)) >0

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

回答 (1 件)

Sean de Wolski
Sean de Wolski 2012 年 7 月 27 日
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 件のコメント
Andrew Alkiviades
Andrew Alkiviades 2012 年 7 月 27 日
Thanks I get all sizes as a 1 and so is the "sz" . The day "d" which is the fifth dimension is a 2. I don't see how I can do anything about this
Andrew Alkiviades
Andrew Alkiviades 2012 年 7 月 27 日
if I change the " for number_turbines " loop on the second line of my code to start from zero then the error is on the fifth dimension. If I have the "for number_turbines" loop starting from 1 then I have the error on the second dimension i.e the "number_turbines".

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

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by