MATLAB 中的结构变量通过 for 循环重叠



我在 matlab 中运行一些回归。

我想通过结构很好地存储变量。

下面是一些代码:

    clc;                                                                                        
clear;                                                                                      
fruit_names={'Apple','Pear','Melon'};
Predictors.Apple = rand(500,11);
Predictors.Pear = rand(500,11);
Predictors.Melon = rand(500,11);
Returns.Apple = rand(500,1);
Returns.Pear = rand(500,1);
Returns.Melon = rand(500,1);
%%
 kk=1;
 for d = 1:length(fruit_names)
 for i = [1,2,3,4,5,6,12,24,48,60]
 for jj = 1:11
     K = i;
     xinit=[Predictors.(fruit_names{d})(:,jj)];
     yinit=Returns.(fruit_names{d});
     [b,bint,r,rint,stats] = regress(yinit,xinit);
     Stats.(fruit_names{d})(kk+1)=stats(1);
     kk=kk+1;%to help with reporting
 end
 end   
 end

老实说,这是我对一个简单的例子的最佳尝试。如果我没记错的话,它确实需要计量经济学工具箱。

我遇到的问题是结构 Stats 存储我需要的结果,但在第一个变量之后包含一些无用的零。

我已经发布并删除了一个较早的问题,该问题建议删除(kk,:)变量,但如果我这样做,它只包含最终结果,而不是通过 for 循环的结果演变。

问题出在 kk 变量的位置。

似乎您需要从后两个循环中收集结果。

clc;                                                                                        
clear;                                                                                      
fruit_names={'Apple','Pear','Melon'};
Predictors.Apple = rand(500,11);
Predictors.Pear = rand(500,11);
Predictors.Melon = rand(500,11);
Returns.Apple = rand(500,1);
Returns.Pear = rand(500,1);
Returns.Melon = rand(500,1);
%%
 for d = 1:length(fruit_names)
 kk=1; %move the kk = 1 variable here.
 for i = [1,2,3,4,5,6,12,24,48,60]
 for jj = 1:11
     K = i;
     xinit=[Predictors.(fruit_names{d})(:,jj)];
     yinit=Returns.(fruit_names{d});
     [b,bint,r,rint,stats] = regress(yinit,xinit);
     Stats.(fruit_names{d})(kk+1)=stats(1);
     kk=kk+1;%to help with reporting
 end
 end   
 end

享受你的水果!

最新更新