楼主: billzsc
12332 3

在Matlab中如何做HP滤波 [推广有奖]

  • 0关注
  • 0粉丝

已卖:9份资源

本科生

55%

还不是VIP/贵宾

-

威望
0
论坛币
476 个
通用积分
23.0983
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1093 点
帖子
77
精华
0
在线时间
91 小时
注册时间
2007-3-23
最后登录
2025-7-7

楼主
billzsc 在职认证  发表于 2008-6-15 10:30:00 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
请教
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:MATLAB matla atlab HP滤波 Mat MATLAB 滤波

沙发
huabinwu 发表于 2008-6-16 15:57:00
下面是我写的一个小程序,希望有用。

function yf=fun(x,lamda)
%Hodrick-Prescott filter
%argin:x: the data need to be filtered, time dimension in the row
%      lamda: define the weight for the trend. default value 1600
%argout: yf: the HP filtered data
%
%by Huabin Wu. Dec 10, 2007
[t,nvar]=size(x);
if t<nvar
    x=x';
end
[t,nvar]=size(x);
if nargin<2
    lamda=1600;
elseif nargin>2
    error('Too many arguments!');
end
if t>4
    d=[lamda -4*lamda 6*lamda+1];
    d=ones(t,1)*d;
    m=diag(d(:,3))+diag(d(1:t-1,2),1)+diag(d(1:t-1,2),-1)...
    +diag(d(1:t-2,1),2)+diag(d(1:t-2,1),-2);
    m(1,1)=1+lamda;       m(1,2)=-2*lamda;
    m(2,1)=-2*lamda;      m(2,2)=5*lamda+1;
    m(t-1,t-1)=5*lamda+1; m(t-1,t)=-2*lamda;
    m(t,t-1)=-2*lamda;    m(t,t)=1+lamda;
    yf=inv(m)*x;
    yf=x-yf;
else
    error('The data is insufficient to be filtered!')
end

[此贴子已经被作者于2008-12-3 21:49:00编辑过]

藤椅
赢月 发表于 2010-8-4 10:54:32
怎么第一句就运行不了啊,呵呵,
Error: Function definitions are not permitted at the prompt or in scripts.
出现这句话,为什么呢?
望大侠指点,谢谢

板凳
matlab-007 发表于 2014-12-21 10:58:08
在Eviews中用hp滤波法
hp滤波主要是滤去周期部分,只留下趋势部分。你打开work file后,选中所要滤波的series,点击procs,拉开菜单再点击
hp filter的选项即可

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-25 20:04