Résultats pour
Hi, 
I was wondering if anyone could help me with how I can simplify this part of my script, specifically scenario 1-3, so that it is easier to read. Perhaps with functions etc. (the comments are in swedish sorry heh. But the script works). 
Thanks in advance!
F1_batt_till_P19 = zeros(8760,length(Effekt)); % det som batteriet laddar upp fastigheten med
F1_Elkons_batt = zeros(8760,length(Effekt)); % konsumtionen från nätet av batteriet 
F1_batterilast_tot = zeros(8760,length(Effekt)); % batterilasten lagras kontenueligt. 
F1_elkonsum = [];
for k = 1: length(Effekt) % går igenom alla olika effekter mellan 100 - 1000 kW
   F1_last_batt = 0; % batteriet måste nollas efter varje ny effekt. 
   batterikapacitet = Kapacitet(k); % såhär stort är batteriet beroende på effekten. Beror på C rate (blir dubbelt så stort som effekten). 
   batterikapacitet_min = batterikapacitet * SOC_low/100; % undre gräns 
   batterikapacitet_max = batterikapacitet *SOC_high/100; % övre gräns   
   F1_last_batt = batterikapacitet_min; % hur mycket kapacitet har batteriet. Finns det något . Börjar tomt. 
   for i = 1:12 % gå igenom månaderna
       mon = [31,28,31,30,31,30,31,31,30,31,30,31];
       slut = mon(i)*24;
       % medelkonsumtionen (i kW) per månad Elkons_months_eft(744,12)
       medel_kons = mean(Elkons_months_eft(1:slut, i)); % Månadens medelkonsumtion
       for m = 1:slut % gå igenom timmarna per månad
           % går igenom varje timme (m), för varje månad (i). 
           % scenario 1 - batteriet laddar ur till medelvärdet
           if Elkons_months_eft(m,i) > medel_kons 
               topp = Elkons_months_eft(m,i) - medel_kons; % storleken på toppen över medelvärde
               % Om batteriet inte är tomt från början. Om det kan laddas ur. 
               if F1_last_batt > batterikapacitet_min
                   % Om batteriet kan laddas ur med hela efffekten utan att gå under min
                   if (F1_last_batt - Effekt(k)) >= batterikapacitet_min 
                      % Om toppen är större eller lika med än vad som får kapas med batteriet - hela effekten används.  
                      if topp >= Effekt(k) % A 
                           F1_batt_till_P19( (24*sum(mon(1:i-1)) + m) ,k) = Effekt(k); % effekt under timmen som batteriet tillgodoser till Pyramiden 19
                           F1_last_batt = F1_last_batt - Effekt(k); % batteriet laddas ur med hela effekten den timmen
                      % Om toppen inte är större än effekten - hela toppen kapas. 
                      else % B 
                           F1_batt_till_P19((24*sum(mon(1:i-1)) + m) ,k) = topp; 
                           F1_last_batt = F1_last_batt - topp; 
                      end
                   % Om batteriet inte kan tömmas med hela effekten.    
                   else 
                       liten_effekt = F1_last_batt - batterikapacitet_min; % mängden som kan laddas ur. 
                       % Om toppen är större än det vi kan använda – allt som är kvar används
                       if topp >= liten_effekt % C
                           F1_batt_till_P19((24*sum(mon(1:i-1)) + m) , k) = liten_effekt; % effekt under timmen som batteriet tillgodoser till Pyramiden 19
                           F1_last_batt = F1_last_batt - liten_effekt; % batteriet laddas ur till min 
                       % Om toppen inte är större än det vi kan använda - hela toppen kapas    
                       else % D 
                           F1_batt_till_P19( (24*sum(mon(1:i-1)) + m) ,k) = topp; 
                           F1_last_batt = F1_last_batt - topp; 
                       end
                   end
               end  
            % scenario 2 - batteriet laddar upp och tar från nätet 
           elseif Elkons_months_eft(m,i) < medel_kons 
               % Om batteriet inte är fullt
               if F1_last_batt < batterikapacitet_max 
                   % Om det får plats en laddning av hela effekten – Batteriet laddas upp
                   if (F1_last_batt + Effekt(k)) <= batterikapacitet_max 
                       % Om uppladdningen inte överstiger medelvärdet – Batteriet laddas upp med effekten
                       if (Elkons_months_eft(m,i) + Effekt(k)) <= medel_kons  % A 
                           F1_Elkons_batt((24*sum(mon(1:i-1)) + m),k) = Effekt(k); % mängden som tas från nätet
                           F1_last_batt = F1_last_batt + Effekt(k);  
                       % Om uppladdningen överstiger medelvärdet – Batteriet laddas upp med det som går    
                       else % B
                           till_medel = medel_kons - Elkons_months_eft(m,i);
                           F1_Elkons_batt((24*sum(mon(1:i-1)) + m),k) = till_medel; 
                           F1_last_batt = F1_last_batt + till_medel; 
                       end  
                   % Om det får plats mindre än hela efffekten i en laddning – Batteriet laddas fullt     
                   else 
                       plats = batterikapacitet_max - F1_last_batt; % det som får plats i batteriet 
                       % Om elkonsumtionen ej överstiger medelvärdet – Batteriet laddas upp till max-taket
                       if (Elkons_months_eft(m,i) + plats) <= medel_kons % C
                           F1_Elkons_batt((24*sum(mon(1:i-1)) + m),k) = plats; 
                           F1_last_batt = F1_last_batt + plats;  
                       % Om elkonsumtionen överstiger medelvärdet – Batteriet laddas upp med det som går     
                       else % D
                           till_medel = medel_kons - Elkons_months_eft(m,i);
                           F1_Elkons_batt((24*sum(mon(1:i-1)) + m),k) = till_medel; 
                           F1_last_batt = F1_last_batt + till_medel; 
                       end 
                   end 
               end
           % scenario 3 - om inget händer 
           elseif Elkons_months_eft(m,i) == medel_kons 
               % inget händer. Precis som jag vill ha det. 
           end
       F1_batterilast_tot((24*sum(mon(1:i-1)) + m),k) = F1_last_batt;  % lägger in batterilasten för timmen i en lista. 
       end % slut - for timmar per mån (m)
   end %slut  for - månaderna (i) 
  % tar bort den sista uppladdningen av batteriet så det kommer ner till min värdet iaf
% får ta bort min värdet kostnaden sen manuellt. 
   for p = 0:(8760-1)
       % Om batteriet har laddning över min kvar i slutet
       if F1_last_batt > batterikapacitet_min
           over = F1_last_batt - batterikapacitet_min;
           % Om platsen är större än eller lika med laddningen på batteriet – Batteriet töms ner till min 
           if F1_Elkons_batt(end-p,k) >= over
               F1_Elkons_batt(end-p,k) = F1_Elkons_batt(end-p,k) - over;
               F1_last_batt = batterikapacitet_min;
               F1_batterilast_tot(end-p,k) = batterikapacitet_min;
           % Om platsen är mindre än laddningen på batteriet – Batteriet töms med hela platsen
           elseif F1_Elkons_batt(end-p,k) < over
               F1_last_batt = F1_last_batt - F1_Elkons_batt(end-p,k);
               F1_batterilast_tot(end-p,k) = batterikapacitet_min;
               F1_Elkons_batt(end-p,k) = 0;
           end
       end
   end                
end % slut for - effekt (k)
% summerar ihop året till ett värde. Får ett värde för varje effekt. 
F1_elkonsum_sum =[];
F1_batt_till_P19_sum =[];
F1_Elkons_batt_sum = [];
F1_effekttopp_medel_year = []; % medel effekttopp under året 
for v = 1:length(Effekt)
    F1_elkonsum(:,v) = (Elkonsumtion_eft(:,1) - F1_batt_till_P19(:,v)) + F1_Elkons_batt(:,v); % elnätskonsumtion under året
    F1_elkonsum_sum(v) = sum(F1_elkonsum(:,v));
    F1_batt_till_P19_sum(v) = sum(F1_batt_till_P19(:,v));
    F1_Elkons_batt_sum(v) = sum(F1_Elkons_batt(:,v));
end
% figure; yyaxis right; plot(F1_elkonsum(:,20)); 
% hold on; plot(Elkonsumtion_eft(:,1));
% hold on; yyaxis left; plot(F1_batterilast_tot(:,20)); legend('Konsum','ladd');
% Beräknar maxeffekten (toppen) för varje månad för alla effekter. Blir  en 12 x length(effekt) lista 
% Den går per rad och tar maxeffekten för månaden för alla kolumner = för alla olika effekter. 
F1_effekttopp_months = zeros(12,length(Effekt)); % effekttopp under månaden för alla olika effekter. 
mon = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; 
for b = 1:12
    F1_effekttopp_months(b,:) = max(F1_elkonsum( (24*sum(mon(1:b-1)) + 1) : 24*sum(mon(1:b)) , : ) ); % [kW]
end
% beräknar medeleffekten för året
for v = 1:length(Effekt)
    F1_effekttopp_medel_year(v) = mean(F1_effekttopp_months(:,v));
end 
