请选择 进入手机版 | 继续访问电脑版
爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 3051|回复: 3

matlab带通滤波

[复制链接]

新浪微博达人勋

发表于 2021-11-23 22:09:12 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
我现在有一个数据(年*日*经度*纬度,73*365*192*94)的数据,想将数据中5-60天的信号过滤出来,用matlab的butter带通滤波器,下面的代码不知道fh,h1,dt这么设置是不是对的,想来这里找找大佬帮忙看看,这样写对不对啊??求求各位大神
fh=60; %60day
h1=5;  %5day
n=4;    %阶数
dt=0.1; %采样间隔0.1day
wn_bandpass=[1/fh/(1/(2*dt)) 1/h1/(1/(2*dt))]; %转为频率%截止频率*2/采样频率
[filter_bandpassa,filter_bandpassb]=butter(n,wn_bandpass); % bandpass
for i=1:73
    for j=1:192
        for k = 1:94
            U_bandpass(j,k,:,i)=filter(filter_bandpassa,filter_bandpassb,squeeze(U_anomaly(j,k,:,i))); %滤波结果,时间序列
        end
    end
end

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2021-11-24 09:25:34 | 显示全部楼层
data1=randn(73,365,192,94);
data2=nan(size(data1));
[b,a]=butter(6,[1/60,1/5]/0.5,'bandpass');
for ii=1:73
    for jj=1:192
        for kk=1:94
            data2(ii,:,jj,kk)=filtfilt(b,a,squeeze(data1(ii,:,jj,kk)));
        end
    end
end
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2021-11-24 10:14:03 | 显示全部楼层
伽蓝鸟 发表于 2021-11-24 09:25
data1=randn(73,365,192,94);
data2=nan(size(data1));
=butter(6,[1/60,1/5]/0.5,'bandpass');

谢谢大佬,这里采样间隔是必须和序列长度有关吗?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-11-24 11:11:59 | 显示全部楼层
FDU.EDU 发表于 2021-11-24 10:14
谢谢大佬,这里采样间隔是必须和序列长度有关吗?

好像看到过几次你的回复了,问题还没解决咩?
你说过了数据是逐日的啊。如果不放心,可以对滤波后的数据算个功率谱,确认一下。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表