Matlab 当一天内的观察次数不相同时,用什么代替重塑?

Matlab 当一天内的观察次数不相同时,用什么代替重塑?,matlab,reshape,Matlab,Reshape,我刚刚开始学习Matlab,如果您能帮助我,我将非常感激 我一直在计算几个小时到每天的回报率。。 对于某些数据,可采用以下方法: (now the price is between that hours) n=length(price); % The number if days %(79 is the number of observations within one day) ndays = n/79; price_d = reshape(price,79,ndays); %I take

我刚刚开始学习Matlab,如果您能帮助我,我将非常感激

我一直在计算几个小时到每天的回报率。。 对于某些数据,可采用以下方法:

(now the price is between that hours)
n=length(price);
% The number if days 
%(79 is the number of observations within one day)
ndays = n/79;
price_d = reshape(price,79,ndays);
%I take returns for each day
returns_d = log(price_d(2:79,:))- log(price_d(1:78,:));
但是现在我有了另一个数据,每天的观察次数不再相同了。所以在一天中,我有79次在另外30次中,一天内有75次观察。因此,我无法再使用重塑..:(

我应该怎么做才能根据每天的观察结果(价格)进行排序?这样就有了和以前类似的东西:行和价格,列和每天对应的价格

所以我有一个nx1(n=935039)的数据向量,如下所示:734142 734142 734142 734142 734142 734143 734143 734143 734143 734143 734143 734143 734143 734143 734143 734143

然后是一个带价格的向量:1115.8000000001115.40000000001116 1115.8000000001115.7000000001115.40000000001115.60000000001115.7000000001115.60000000001115.7000000001115.60000000001115.60000000001115.8000000001115.8000000001115.8000000001115.700000000对应到每个日期

和一个以秒为单位的向量:030060900150018002100 240027003030030036003900

没有办法将它们拆分成一个矩阵,我不知道有多少行(这将是每天的价格),但我知道第1260列的数量(这是我拥有的天数)…或者如果不只是用每天的价格制作1260向量(nx1)


在Ox中是这样的(我的协调人4博士告诉我,但他不使用matlab):对于(i=1;i你可以使用一个包含不同长度向量的单元数组,每天一个。然后可以使用
cellfun
arrayfun
计算每天的内容

>> measurements = {[1,2,3],[10,11],[14,15,16,17]};
>> avg_per_day = cellfun(@mean, measurements)
avg_per_day =
    2.0000   10.5000   15.5000

您可以使用包含不同长度向量的单元格数组,每天一个。然后可以使用
cellfun
arrayfun
计算每天的内容

>> measurements = {[1,2,3],[10,11],[14,15,16,17]};
>> avg_per_day = cellfun(@mean, measurements)
avg_per_day =
    2.0000   10.5000   15.5000

抱歉,如果这可能是一个愚蠢的评论…我有935039行的价格(如果我计算唯一的(日期),我得到1260天)…所以我必须把这些行的价格加工到今天…所以在第一天可能是79行(价格)这就是我的问题:我该如何把它们放在一个单元格数组中?我该如何说每天给我一个核心报价并把它们放在一个单元格数组中?答:如果你没有给出你的数据的任何例子,我会说。但是看看
mat2cell
@MarinelaFinta。请将这些评论纳入你的主要帖子中,使其成为pastab的副本请输入Matlab,然后删除评论。抱歉,如果这可能是一个愚蠢的评论…我有935039行价格(如果我计算唯一的(日期),我得到1260天)…所以我必须将这些行的价格加工到今天…所以第一天可能是79行(价格)这就是我的问题:我该如何把它们放在一个单元格数组中?我该如何说每天给我一个核心报价并把它们放在一个单元格数组中?答:如果你没有给出你的数据的任何例子,我会说。但是看看
mat2cell
@MarinelaFinta。请将这些评论纳入你的主要帖子中,使其成为pastab的副本le进入Matlab,然后删除注释。只需计算整个时间序列的回报,并计算出隔夜回报,即与当天变化相对应的回报。要查找日期变化的时间,如果您有序列日期,可以
datevec()
it并执行
find(diff(dayvector))
。对不起,如果你有一个
a=n x 1260
矩阵,为什么不简单地
a(2:end,:)./a(1:end-1,:)-1
?只需计算整个时间序列的回报,然后计算隔夜回报,即与当天变化相对应的回报。要想知道当天变化的时间,如果你有序列日期,你可以
datevec()
打开它,然后做一个
查找(diff(dayvector))
对不起,如果你有一个
a=nx1260
矩阵,为什么不干脆
a(2:end,:)/a(1:end-1,:)-1