Unable to populate trip usage tripusage=zeros(1,288) with my result tripusage(k)= (p1*x^2 + p2*x + p3) *fivemindist;

1 次查看(过去 30 天)
QatarEV=174680;
% aveDemand=zeros(1,288);
tripusage=zeros(1,288);
% for iteration=1:100
% n = iteration;
time= 1:288;
sedanShare=0.46;
num.sedans = QatarEV * sedanShare;
num.sedans = round(num.sedans);
num.suvs = 174670 - num.sedans;
sedanTypes = ["Tesla3", "MercedesEQS", "TeslaS", "Hyundai"];
Sedan_Battery = [54;107.8;103;64]*1e3;
%sedan battery packs in kWh
suvTypes = ["Mercedes", "Nissan", "Toyota", "Renault", "VW"];
SUV_Battery = [28;40;40;41;35.8]*1e3;
charger=[3.6 7.2 22 50];
demand=zeros(1,288);
%DL driving licence, AP is active persons
% tripsedan= 0.357 +1.3681*DL + 2.4914*AP ;
% tripSUV= 0.5323 +0.9815*DL + 2.3961*AP;
tripsplit = [1 1; 1 2; 4 4; 8 5; 10 6; 9 8; 7 10; 7 7; 9 6; 7 9; 7 7; 8 8; 7 10; 8 7; 4 6; 2 4];
timeWindows2 = {[72 84], [84 96], [96 108],[108 120], [120 132],[132 144],[144 156],[156 168],[168 180],[180 192],[192 204],[204 216],[216 228],[240 252],[252 264],[264,276]};
tripmonday=[1,1,4,8,10,9,7,7,9,7,7,8,7,8,4,2];
timeWindows = {'6-7am', '7-8am', '8-9am', '9-10am', '10-11am', '11am-12pm', '12-1pm', '1-2pm', '2-3pm', '3-4pm', '4-5pm', '5-6pm', '6-7pm', '7-8pm', '8-9pm', '9pm-10pm'};
% Normalize the values in tripmonday
tripmonday_norm = tripmonday / sum(tripmonday);
% Compute the cumulative sum of the normalized probabilities
tripmonday_cum = cumsum(tripmonday_norm);
% temp details
t = readtable("qatarFIXED.csv",Range="A2:B745");
t.Properties.VariableNames = ["date","temp"];
t.date = datetime(t.date);
plot(0:23,reshape(t.temp,31,24)')
legend("July" + (1:31),Location="eastoutside")
ylabel("temperature")
xlabel("hour")
[g,hour] = findgroups(t.date.Hour);
meanTemp = splitapply(@mean,t.temp,g);
stdTemp = splitapply(@std,t.temp,g);
tempinfo=table(hour,meanTemp,stdTemp);
disp(tempinfo);
hold on
plot(0:23,meanTemp,'k:',LineWidth=3)
% Set the number of samples to generate for each hour
n_samples = 1;
% Pre-allocate a matrix to hold the generated temperatures
temperatures = zeros(n_samples, 24);
% Loop through each hour of the day
for i = 1:24
% Extract the mean and standard deviation for the current hour
mu = meanTemp(i);
sigma = stdTemp(i);
% Generate a list of temperatures for the current hour
temperatures(:, i) =(normrnd(mu, sigma, n_samples, 1));
tempertaures= repelem(temperatures,12);
end
% Index 1: 1-2 hours/40-100km
index1_percent = 15.38;
% Index 2: 2-3 hours/90-180km
index2_percent = 34.07;
% Index 3: 3-4 hours/90-180km
index3_percent = 47.25;
% Index 4: over 4 hours/over 180km
index4_percent = 3.3;
%generate time windows for each sedan based on probability
for i = 1:num.sedans
chType=1+randi(3,1,1);%charger is Level 2 or fast
btType=randi(4,1,1);%indexfor battery size
sedanChosen = sedanTypes(btType);
SoCLevel=round(20 + (40-20).*rand(1,1));
DL = randi(2,1,1)-1;
AP = randi(3,1,1);
tripsedan= floor(0.357 +1.3681*DL + 2.4914*AP) ;
chosen_car_coeffs = coeffs_table(strcmp(coeffs_table.Vehicle, sedanChosen), :);
% Extract the p1, p2, p3 values for the chosen car
p1 = chosen_car_coeffs.p1;
p2 = chosen_car_coeffs.p2;
p3 = chosen_car_coeffs.p3;
rand_num = rand();
% Determine the range of hours and distance based on the random number
if rand_num < index1_percent/100
% Generate random number of 5-minute intervals between 1-2 hours
hours = randi([12,24])/12;
distance = randi([0,40]);
fivemindist= distance/(hours*12);
elseif rand_num < (index1_percent + index2_percent)/100
% Generate random number of 5-minute intervals between 2-3 hours
hours = randi([24,36])/12;
distance = randi([40,100]);
fivemindist= distance/(hours*12);
elseif rand_num < (index1_percent + index2_percent + index3_percent)/100
% Generate random number of 5-minute intervals between 3-4 hours
hours = randi([36,48])/12;
distance = randi([90,180]);
fivemindist= distance/(hours*12);
else
% Generate random number of 5-minute intervals over 4 hours
hours = randi([48,60])/12;
distance = randi([180,200]);
fivemindist= distance/(hours*12);
end
end
rand_num2 = rand * 0.33;
random_numbers = rand(1, tripsedan);
sum_of_numbers = sum(random_numbers);
thesplit = random_numbers / sum_of_numbers;
num_splits = length(thesplit);
tripdistances = zeros(1, num_splits);
for j= 1:tripsedan
% Determine the departure time for the trip
departure_time = find(tripmonday_cum >= rand_num2, 1);
% Get the corresponding time window from timeWindows2
departure_time_window = randi(timeWindows2{departure_time});
tripdistance = distance*thesplit(mod(j-1, length(thesplit)) + 1);
duration= tripdistance/fivemindist;
endtriptime= round(departure_time_window + duration);
for k= departure_time_window:endtriptime
x=temp{k};
tripusage(k)= (p1*x^2 + p2*x + p3) *fivemindist;
end
end

回答(1 个)

Walter Roberson
Walter Roberson 2023-1-30
x=temp{k};
variable temp with lower case T is not defined. You have a variable Temp with upper case T

Community Treasure Hunt

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

Start Hunting!

Translated by