create a specific vector from excel file

17 views (last 30 days)
I want create a zero vector (1*24) and according to the appliances like for 'lights' (in Excel file ) create A1 zero vector (1*24) ,start and end time shows that A1 zero vector replace power value of 0.5 between 18-24 in row vector but the condition is that this 0.5 values put only 6 places randomly between 18-24. And similarly for all appliances. Like PHEV A17 vector it should contain 2.5 power value at 20-21-22-23-24-1-2-3-4-5-6 only for 4 (hours ) place randomly at any place between 20-6 .
  3 Comments
MUKESH KUMAR
MUKESH KUMAR on 4 Aug 2017
read the attached excel file there and i assume A1 vector for lights and A2 for refrigerator ,A3 for electric stove and so on....... output should be like A1=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0 0.5 0.5 0.5 0.5]; A2=[0.125 0.125 0.125 0.125 0.125 0.125 0.125 0.125 0.125 0.125 0.125 0.125 0.125 0.125 0.125 0.125 0.125 0.125 0.125 0.125 0.125 0.125 0.125 0.125];%0.125 placed between 1-24 in 1*24 vector only for 24 hours(G2 value in excel). A3=[0 0 0 0 0 0 1.5 1.5 0 0 1.5 0 0 0 0 0 0 0 0 0 0 0 0 0];% 1.5 placed between 6-14th in 1*24 vector only for 3hours(G3 value in excel).

Sign in to comment.

Accepted Answer

KL
KL on 8 Aug 2017
If I understood correctly, the following is what you're looking for. It's basically the same as Jan's but I just did it for the rest of the data from your excel file
data = xlsread('apdata.xls');
data_len = length(data);
A = zeros(18,data_len);
fi = @(a,b) ([a:data_len 1:b]);
for i = 1:data_len
pVec = data(i,3)*ones(data(i,5),1);
if(data(i,1)<data(i,2))
ind = data(i,1):data(i,2);
else
ind = fi(data(i,1),data(i,2));
end
x = randperm(numel(ind));
x = x(1:data(i,5));
A(i,ind(x)) = pVec;
end
  2 Comments
MUKESH KUMAR
MUKESH KUMAR on 9 Aug 2017
but if I create a matrix for a single value of 'i' without loop then its create only vector A size 18*18 but i require A vector of 18*24 or 1*24 for single value of 'i'. explain the following code:
fi = @(a,b) ([a:data_len 1:b]);

Sign in to comment.

More Answers (1)

Jan
Jan on 4 Aug 2017
All I understand from the question is: "0.5 values put only 6 places randomly between 18-24":
A1 = zeros(1, 24);
index = 18:24;
index = index(randperm(1:7, 6));
A1(index) = 0.5;
Easier:
A1 = zeros(1, 24);
A1(18:24) = 0.5;
A1(randi([18, 24], 1)) = 0;
I have no idea, what the rest of the question means.
  4 Comments
Jan
Jan on 9 Aug 2017
No, I do not understand it. "simillary for all appliances like for 'TV' (in Excel file )" What is a "appliance", what is "TV", what does "in Excel file" mean? What is an "A5 zero vector (1*24)"? "start and end time shows that A1 zero vector replace power value of 0.25 between 16-24"?
Sorry, I do not understand any sentence of the explanation. If KL#s answer solves your problem, it is not worth to explain it again.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!

Translated by