我是Matlab的新手,我正在努力创建一个转换283080 x 2矩阵的循环 - 第1列列出所有stockID号(每个重复60次),第2列包含所有滞后的月回报(60每个股票的观察结果)变成一个60 x 4718矩阵,每个stockID有一列,其相应的滞后回报在每个ID号下面60行。
我的目标是尝试计算回报的方差 - 协方差矩阵。
我相信我需要一个循环,因为我将重复此过程超过70次,因为我有相同的当前格式的多个数据集
非常感谢你的帮助!
答案 0 :(得分:2)
让data
表示您的矩阵。然后:
aux = sortrows(data,1); %// sort rows according to value in column 1
result = reshape(aux(:,2),60,[]); %// reshape second column as desired
如果您需要将stockID值作为标题(结果的第一行)插入,请将其添加为最后一行:
result = [ unique(aux(:,1)).'; result ];
一个简单的例子,将60替换为2:
>> data = [1 100
2 200
1 101
2 201
4 55
3 0
3 33
4 56];
>> aux = sortrows(data,1);
>> result = reshape(aux(:,2),2,[])
>> result = [ unique(aux(:,1)).'; result ];
result =
1 2 3 4
100 200 0 55
101 201 33 56