Info

この質問は閉じられています。 編集または回答するには再度開いてください。

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

2 ビュー (過去 30 日間)
PaoloPa
PaoloPa 2014 年 2 月 23 日
閉鎖済み: MATLAB Answer Bot 2021 年 8 月 20 日
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 件のコメント
Walter Roberson
Walter Roberson 2014 年 2 月 23 日
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 ?

回答 (1 件)

PaoloPa
PaoloPa 2014 年 2 月 24 日
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 件のコメント
PaoloPa
PaoloPa 2014 年 2 月 24 日
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

この質問は閉じられています。

Community Treasure Hunt

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

Start Hunting!

Translated by