1

こんにちは、「インデックスがマトリックスの次元を超えています」というエラーを出し続けるこのコードがあります。「battery_capacity」マトリックス = 2 の値を使用して、h=1、d= 1 で 24 個の「h」と 3 個の「d」のループを開始しようとしていますが、これはマトリックスのサイジングに関して矛盾しているようです。どんな助けでも大歓迎です!「h-1」が問題を引き起こしている可能性があります。"battery_capacity" を 2 回目に書き込むとエラーが発生する 私のコードは idx_number_panels = 1:length(number_panels) の PV パネル ユニットの % 範囲です。

for number_turbines = 0:2 % range of wind turbine units examined
  for number_batteries = 1:50 % range of battery units examined
    for h=2:25 %# hours
      for d = 1:number_of_days %# which day
        battery_capacity(idx_number_panels, number_turbines+1, ...
                         number_batteries, 1, 1) =  2*number_batteries;
        %% Charging
        battery_charging(idx_number_panels, number_turbines+1, ...
                         number_batteries, h, d) ...
          = hourly_surplus(idx_number_panels, number_turbines+1, ...
                          number_batteries, h, d) ...
            + battery_capacity(idx_number_panels, number_turbines+1, ...
                               number_batteries, h-1,d);
    end
  end
end

デバッガ

error line 134 

battery_charging(idx_number_panels, number_turbines+1 ,number_batteries, h,d) =        hourly_surplus(idx_number_panels, number_turbines+1 ,number_batteries, h,d)...
    K>> sz = size(battery_charging)

sz =

 1     1     1     2

K>> index = [idx_number_panels, number_turbines+1 ,number_batteries, h-1,d]

index =

 1     1     1     1     2

K>> ndims(battery_charging)

ans =

  4

コマンドラインで「battery_charging」を実行する

>> battery_charging

battery_charging(:,:,1,1) =

 0


battery_charging(:,:,1,2) =

  0

4

1 に答える 1

2

コードから問題が何であるかを理解しようとするよりも、次のようにデバッグする方が簡単です。まず、エラー時に中断するようにデバッガーを設定します。

>> dbstop if error

ここで、コードをもう一度実行します。エラーが発生すると、次のデバッグ プロンプトが表示されます。

K>>

エラーが発生した時点で、さまざまなインデックスの値と行列の形状を調べて、問題の原因を突き止めることができます。

于 2012-07-28T01:50:28.363 に答える