Стойността на променливата 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