Info

Questa domanda è chiusa. Riaprila per modificarla o per rispondere.

Why do I get a 6x30 matrix instead than a 1031x30

3 visualizzazioni (ultimi 30 giorni)
PaoloPa
PaoloPa il 23 Feb 2014
Chiuso: MATLAB Answer Bot il 20 Ago 2021
Hi, I run this code and I got as a result a 6x30 matrix instead than a 1031x30.
Total weeks is long 1052 cells, startweek is 8. orderweeks is 6 cells long, and the result shows only the last 6 rows of the whole period.
for k = startweek:totalweeks-p1-p2-1
start1 = k;
stop1 = start1+p1-1;
orderweeks = start1:stop1;
start2 = stop1+2;
stop2 = start2+p2-1;
holdweeks = start2:stop2;
nstocks = nbrstocks(k);
% order R for the ordering weeks
data1 = stockdata(orderweeks, 1:nstocks);
I am not sure I made myself very clear.... Thanks anyway
PP.
  1 Commento
Walter Roberson
Walter Roberson il 23 Feb 2014
Where is the end of your "for" loop?
As you are in a "for" loop, which variable are you saving results into that is not overwritten by the next iteration of the loop ?

Risposte (1)

PaoloPa
PaoloPa il 24 Feb 2014
Ok then I put the whole code..
for k = startweek:totalweeks-1-p1-p2
start1 = k; stop1 = start1+p1-1; orderweeks = start1:stop1;
start2 = stop1+2;
stop2 = start2+p2-1;
holdweeks = start2:stop2;
nstocks = nbrstocks(k);
% order R for the ordering weeks data1 = stockdata(orderweeks, 1:nstocks);
R1 = ones(1,nstocks);
for m = 1:length(orderweeks)
R1 = R1.*data1(m,:);
end
R1 = R1-1;
% select for the winners and losers
[B,idx] = sort(R1,'descend');
ncandidates = round(nstocks*0.1);
idwinner(k,1:ncandidates) = stockid(idx(1:ncandidates));
idloser(k,1:ncandidates) = stockid(idx(end-ncandidates+1:end));
% caculate the R for winners and losers in holding weeks
data2winner = stockdata(holdweeks, idx(1:ncandidates));
data2loser = stockdata(holdweeks, idx(end-ncandidates+1:end));
R2w = ones(1,ncandidates);
R2l = ones(1,ncandidates);
for m = 1:length(holdweeks)
R2w = R2w.*data2winner(m,:);
R2l = R2l.*data2loser(m,:);
end
R2w = R2w-1;
R2l = R2l - 1;
Rwinner(k) = mean(R2w);
Rloser(k) = mean(R2l);
end
end end
  1 Commento
PaoloPa
PaoloPa il 24 Feb 2014
I've been trying this
data1 = stockdata(isfinite(stockdata(orderweeks, :)));
but I stillget bizarre results...like a 180x1 vector.... Any help is very much appreciated mate

Questa domanda è chiusa.

Community Treasure Hunt

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

Start Hunting!

Translated by