Why am I getting an indices error?
Show older comments
clc;
clear;
data = readtable('A_minute.xlsx');
% step 2: store date and time data as a datenum (DaT) and then convert to datetime (t)
% summer: t(2:102241)
DaT = datenum(data.Var1);
t = datetime(DaT, 'ConvertFrom','datenum');
TimeofDay = timeofday(t(2:102241));
TimeofDay = ceil(TimeofDay,'minute');
[UniqueTimeSteps,~,pos] = unique(TimeofDay);
UniqueTimeSteps = UniqueTimeSteps(2:end);
pos =pos -1;
pos(pos==0) = 24;
% step 3: store the other columns from the excel data file
AptA = data(:,4);
AptA = table2array(AptA);
AptA = AptA(1:102241);
% step 4: for loop extracting the hour and indexing it through for weekday versus weekend
Consumption_Weekday = zeros(1,length(UniqueTimeSteps));
Consumption_Weekend = zeros(1,length(UniqueTimeSteps));
wd = weekday(t) > 1 & weekday(t) < 7;
for i = 1:length(UniqueTimeSteps)
idx = (pos == i & wd);
Consumption_Weekday(i) = mean(AptA(idx));
idx = (pos == i & (~wd));
Consumption_Weekend(i) = mean(AptA(idx));
end
MinuteValue= UniqueTimeSteps;
% step 5: plot
figureA = figure;
plot(MinuteValue,Consumption_Weekday,'-b');
hold on
plot(MinuteValue,Consumption_Weekend,'-r');
ylim([0.2 0.7]);
xlabel('Time'), ylabel('Electric Demand (kW)'), ...
title('Unit A - Average Aggregated HVAC Electric Demand (kW)'), ...
legend('Weekdays','Weekends')
Matrix dimensions must agree.
Error in A_minute_wk (line 30)
idx = (pos == i & wd);
2 Comments
Walter Roberson
on 8 Jun 2020
You did not indicate which line was causing the problem, but observe that
idx = (A_t.Minute == MinValue & weekday(A_t) > 1 & weekday(A_t) < 7);
could potentially match several entries, so AptAs(idx) might be multiple values (or no values?), but you expect it to be a scalar.
Fatemah Ebrahim
on 8 Jun 2020
Accepted Answer
More Answers (0)
Categories
Find more on Creating and Concatenating Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!