我设计一个带有参数的M函数,但是调试中出现错误:局部变量值发生变化比配全局变量!奇怪的是,我设置的全上全局变量,请高人指点!谢谢!
详细如下:
***************************************
%(*设置模型基本的参数*)
%(*以parameter.m保存的M文件*)
Rf =1.198;
Pha = 0.05;
Delta = 0.2;
DeltaTOW = 0.4;
Dr = 0.0612;
DrTOW = 0.112;
DC =1;
DI = 1;
gg = 0.148;
Gama = 0.99;
Womiga = 0.6;
Beta = 0.98;
BBa = 1.0094;
NumOfStockShockPoints = 10;
NumOfHomeShockPoints = 10;
NumOfLaborShockPoints = 10;
ww = 10;
**************************************
%(*设置MC仿真格点*)
%(*以shocks_h.m保存*)
global NumOfHomeShockPoints H_Vec
R_H = 0.1;
SIGAMA_H = 0.02;
H_Vec = 1+R_H+sqrt(SIGAMA_H)*randn(1,NumOfHomeShockPoints);
H_Vec;
************************
%(*设置MC仿真劳动冲击格点*)
%(*以shocks_l.m保存*)
global NumOfLaborShockPoints L_Vec
SIGAMA_L = 0.148;
L_Vec =sqrt(SIGAMA_L)*randn(1,NumOfLaborShockPoints);
L_Vec;
****************************
%(*设置MC仿真股票收益冲击格点*)
%(*以shocks_h.s保存*)
global NumOfStockShockPoints S_Vec
R_S = 0.064;
SIGAMA_S = 0.08;
S_Vec = 1+R_S+sqrt(SIGAMA_S)*randn(1,NumOfStockShockPoints);
S_Vec;
************************************************************************************************
%(*set up an expected function*)
function f1 = funrate(bb,ss,hhc,hhi)
global Rf Pha Delta DeltaTOW Dr DrTOW DC DI H_Vec S_Vec L_Vec ww gg Gama Womiga Beta BBa
NumOfStockShockPoints NumOfHomeShockPoints NumOfLaborShockPoints
%(*财富增长率函数*)
parameter;
shocks_l;
shocks_s;
shocks_h;
ff1 = 0;
for i = 1:10
for j = 1:10
for k = 1:10
ff1 = ff1+ Rf*bb+S_Vec(i)*ss+DC.*(H_Vec(j).*(1-Pha)-(1-Delta).*Dr)*hhc+DC.*DI.*(H_Vec(j).*(1-Pha)-(1- DeltaTOW).*DrTOW)*hhi+(gg+L_Vec(k)).*1/(ww+1);
end
end
end;
ff2 = (ff1).^(1-Gama);
ff3 = ff2.*(H_Vec(j)).^(Womiga.*(Gama-1));
%(*期望函数)
ff4 = Beta.*BBa.*ff3;
f1 = -(1/NumOfStockShockPoints.*1/NumOfHomeShockPoints.*1/NumOfLaborShockPoints.*ff4);
*********************************************************
说明;我用的是MATLAB7.0;问题出的位置是最后的M函数funrate调用.