Значение переменной number_panels
начинается с 3000 вместо 0 или 1. Таким образом, когда вы индексируете матрицу с этой переменной в качестве значения индекса, Matlab считает, что вам нужен 3001-й индекс, и, таким образом, дает вам матрицу, состоящую из 3000 нулей, где 3001-й равен установите то, что вы просите.
Если вы будете следовать циклу в следующем цикле, значение number_panels
станет 3500. Теперь вы индексируете 3501, основываясь на вашем коде. Это означает, что все разряды от 3002 до 3500 будут заполнены нулями, а 3501 будет установлено на любое значение, которое вы ему зададите.
Та же логика применима и к number_turbines
. Единственное отличие состоит в том, что вы будете индексировать на 1, а не на 500, как в случае с number_panels
.
Если вы хотите вернуться к ожидаемой матрице размеров, вам нужно будет изменить способ вызова значений индекса. Это можно сделать несколькими способами. У вас может быть счетчик в цикле for или вы можете использовать математику по модулю. Математика модуля не работает, когда вы используете размер шага, отличный от 1
. Это также не работает, когда вы доходите до точки, где у вас есть значение индекса, кратное вашему начальному индексу.
Вам придется решить, что будет лучше всего работать для вас в этой области. Тем более, что вы хотите использовать размер шага, отличный от 1. Но для number_turbines
, который идет от 5 до 8, вы можете просто индексировать, используя number_turbines - 5 + 1
или более краткое number_turbines-4
.
Для ясности, вот код, который вы предоставили с необходимыми настройками, чтобы показать использование того, что было упомянуто в комментариях. Обратите внимание, что вам нужно будет изменить -4
для значения индекса number_turbines
, если вы начнете с чего-то другого, кроме 5
. Также обратите внимание, что теперь вам нужно проиндексировать вектор number_panels
, так как это не циклическое значение.
Надеюсь это поможет!
number_of_days = 2;
number_panels = 3000:500:4000;
for idx_number_panels = 1:length(number_panels) % range of PV panel units examined
for number_turbines = 5:8 % range of wind turbine units examined
for h=1:24 %# hours
for d = 1:number_of_days %# which day
n = h + 24*(d-1);
% hourly_deficit_1(...,..., h, d)= Demand(n)-(PV_supply(n)... %
hourly_deficit(idx_number_panels , number_turbines -4, h,d) = hourly_annual_demand(n) - (hourly_annual_PV(n)*number_panels(idx_number_panels)) - (hourly_annual_WT(n)*number_turbines);% hourly power deficit (RES supply with demand)
if hourly_deficit(idx_number_panels, number_turbines -4, h,d)< 0 % zero out negative hourly deficit values (this is power surplus from RES)
hourly_deficit(idx_number_panels, number_turbines -4, h,d) = 0;
end
end
end
end
end
person
Ben A.
schedule
23.07.2012