フィルターのクリア

Store values from loop

5 ビュー (過去 30 日間)
Simon Christensen
Simon Christensen 2024 年 3 月 8 日
コメント済み: Rik 2024 年 3 月 8 日
Hi Matlab,
I'm running a program, calculating the recurvie residuals (see code below). The loop indicates the model is run for some base period (Z) until end of the sample.
for (i = Z:206)
%data
vX = [LOG_GDP(1:i,:,1), gvm_GDP(1:i,:,1), goverment_bond(1:i,:,1), t_bill(1:i,:,1), inflation(1:i,:,1), LOG_private_investment(1:i,:,1), LOG_mon_base(1:i,:,1), LOG_gvm_spending(1:i,:,1), excess_return(1:i,:,1), Unemployment(1:i,:,1), LOG_private_con(1:i,:,1), LOG_house(1:i,:,1)];
%function to calculate residuals from VECM
[res1] = f(vX, K, r, p)
end
However, I do not understand how to store the estimates forthe loop. If I run the program, it only returns the values for last value.
Does someone know how to store the values?
Any help is greatly appreciated
Best regards

採用された回答

Rik
Rik 2024 年 3 月 8 日
If you want to store results from all iterations, you need to store them and not overwrite them:
res1 = cell(1,100);index = 0;
for i = Z:206
%data
vX = [LOG_GDP(1:i,:,1), gvm_GDP(1:i,:,1), goverment_bond(1:i,:,1), t_bill(1:i,:,1), inflation(1:i,:,1), LOG_private_investment(1:i,:,1), LOG_mon_base(1:i,:,1), LOG_gvm_spending(1:i,:,1), excess_return(1:i,:,1), Unemployment(1:i,:,1), LOG_private_con(1:i,:,1), LOG_house(1:i,:,1)];
%function to calculate residuals from VECM
index = index+1;
res1{index} = f(vX, K, r, p);
end
res1((index+1):end) = []; % remove unused elements
  3 件のコメント
Simon Christensen
Simon Christensen 2024 年 3 月 8 日
Actually, I think i found the solution to the above by myself: It is just to rearrange the function outout. All good!
Rik
Rik 2024 年 3 月 8 日
You should not use numbered variables. That encodes data in the variable name, which is a fragile method of design that doesn't scale well.
res = cell(100,4);index = 0;
for n=1:3
index = index+1;
[res{index,:}]=example_function;
end
res((index+1):end,:) = []; % remove unused elements
disp(res)
{[1.1713]} {[2.3546]} {[3.6638]} {[4.5237]} {[1.4065]} {[2.1759]} {[3.1997]} {[4.8497]} {[1.1356]} {[2.5412]} {[3.4620]} {[4.7298]}
% example function with 4 outputs
function [a,b,c,d]=example_function
a=1+rand;b=2+rand;c=3+rand;d=4+rand;
end

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeSignal Radiation and Collection についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by