create a specific vector from excel file

13 visualizzazioni (ultimi 30 giorni)
MUKESH KUMAR
MUKESH KUMAR il 4 Ago 2017
Commentato: Jan il 9 Ago 2017
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 Commenti
MUKESH KUMAR
MUKESH KUMAR il 4 Ago 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).

Accedi per commentare.

Risposta accettata

KL
KL il 8 Ago 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 Commenti
MUKESH KUMAR
MUKESH KUMAR il 8 Ago 2017
thanks 100% right that I need ,I got from matrix A .
MUKESH KUMAR
MUKESH KUMAR il 9 Ago 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]);

Accedi per commentare.

Più risposte (1)

Jan
Jan il 4 Ago 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 Commenti
MUKESH KUMAR
MUKESH KUMAR il 8 Ago 2017
still did not understand my question?
Jan
Jan il 9 Ago 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.

Accedi per commentare.

Community Treasure Hunt

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

Start Hunting!

Translated by