2016-04-12 17 views
0
function [miu_tau] = CARE_SAV(beta,Yt,t,miu_1) 

    if t > 1 
     miu_tau =beta(1)+beta(2) * ... 
       [CARE_SAV(beta, Yt, t-1, miu_1)]+beta(3)*abs(Yt(t-1)); 
    else 
     miu_tau = miu_1 
    end 

皆さん、こんにちは皆、私はMatlabには本当に新しく、本当に単純な再帰関数をコード化しようとしています。すべての変数を指定することで、関数はうまく機能します。しかし、私は関数を実行するときにmiu_tauの値を保存します。私はここで別の答えから以下を試した。MATLABに再帰関数の値を格納する

function [miu_tau] = CARE_SAV(beta,Yt,t,miu_1) 
    miu_tau={} 
    if t > 1 
     miu_tau =[miu_tau; beta(1)+beta(2) * ... 
       [CARE_SAV(beta, Yt, t-1, miu_1)]+beta(3)*abs(Yt(t-1))]; 
    else 
     miu_tau = [miu_tau;miu_1] 
    end 

これはうまくいかない。誰かがここに再帰関数から値を格納する方法を教えてもらえますか?

多くのありがとうございます。

+0

それぞれのパラメータは何ですか?各呼び出しですべてのパラメータが変更されますか?どのようにこの関数を呼び出すつもりですか?出力のユースケースは何ですか? – TroyHaskin

答えて

0

私はそれを自分で考え出しました。ここでグローバル変数を追加することで、再帰プロセスによって計算されたすべての値を保存できます。

function [miu_tau, result] = CARE_SAV(beta,Yt,t,miu_1) 
global result; 
    if t > 1 
     miu_tau =beta(1)+beta(2) * ... 
       [CARE_SAV(beta, Yt, t-1, miu_1)]+beta(3)*abs(Yt(t-1)); 
     result = [result;miu_tau]; 
    else 
     miu_tau = miu_1 
     result = [result;miu_tau]; 
    end 
+1

このシナリオでは、グローバル変数は絶対に避けてください。あなたがモデル化しようとしている方程式を見せることができれば、グローバル変数を使わない答えを間違いなく表示することができます。 – Suever

0
function [miu_tau] = CARE_SAV(beta,Yt,t,miu_1) 

miu_tau=[]; 
    if t > 1 
     miu_tau =[miu_tau; beta(1)+beta(2) * ... 
       [CARE_SAV(beta, Yt, t-1, miu_1)]+beta(3)*abs(Yt(t-1))]; 
    else 
     miu_tau = [miu_tau;miu_1] 
    end 

これは動作するはずです。セルの代わりに、行列記法を使用します。