Matlab循环将N x 1矩阵转换为60 x 4718矩阵

时间:2014-01-14 23:39:23

标签: matlab matrix

我是Matlab的新手,我正在努力创建一个转换283080 x 2矩阵的循环 - 第1列列出所有stockID号(每个重复60次),第2列包含所有滞后的月回报(60每个股票的观察结果)变成一个60 x 4718矩阵,每个stockID有一列,其相应的滞后回报在每个ID号下面60行。

我的目标是尝试计算回报的方差 - 协方差矩阵。

我相信我需要一个循环,因为我将重复此过程超过70次,因为我有相同的当前格式的多个数据集

非常感谢你的帮助!

1 个答案:

答案 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