filt1文档

filt1适用于一个零相位巴特沃斯滤波器。需要Matlab信号处理工具箱。

回到气候数据工具的内容

内容

语法

yf = filt1 (filtertype y“俱乐部”,fc) yf = filt1 (filtertype, y, Tc, Tc) yf = filt1 (filtertype y lambdac, lambdac) yf = filt1 (…, fs, fs) yf = filt1 (…,“x”, x) yf = filt1 (…, Ts, Ts) yf = filt1…,“秩序”,FilterOrder) yf = filt1(…,“暗”,暗)[yf, filtb filta] = filt1 (…)

描述

yf = filt1 (filtertype y“俱乐部”,俱乐部)过滤器1 d信号y使用指定的filtertype和截止频率足球俱乐部。高通或低通滤波器足球俱乐部必须是一个标量。为带通和带阻滤波器足球俱乐部必须是一个双元素数组。的filtertype可以

yf = filt1 (filtertype, y, Tc, Tc)指定截止时间(s),而不是截止频率。这个语法假设T = 1 / f和一模一样“lambdac”选项,但也许更直观的处理时间序列。

yf = filt1 (filtertype y lambdac, lambdac)指定截止波长(s),而不是截止频率。这个语法假设λ= 1 / f。

yf = filt1 (…, fs, fs)指定一个采样频率Fs。如果既不“fs”,“x”,也不“t”是指定的,Fs = 1假定。

yf = filt1 (…,“x”, x)指定一个向量的单调增加,条平行的采样时间x相对应的位置y,这是用来确定采样频率。如果既不“fs”,“x”,也不“t”是指定的,Fs = 1假定。

yf = filt1 (…, Ts, Ts)指定一个采样周期或抽样,这样的距离Fs = 1 / Ts。如果既不“fs”,“x”,也不“t”是指定的,Fs = 1假定。

yf = filt1(…,“暗”,暗)指定一个维度来操作。默认情况下,沿着第一nonsingleton filt1运营维度1 d和2 d数组,但运营维度3对3 d网格数据集。

yf = filt1(…,“秩序”,FilterOrder)指定的顺序(有时称为滚边巴特沃斯滤波器的)。如果未指定的,FilterOrder = 1假定。

(yf, filtb filta] = filt1 (…)还返回筛选分子filta和分母filtb

示例1:火车吹口哨

在这个例子中,我们将使用内置的火车汽笛示例文件,我们将添加一个小高斯随机噪声使事情变得有趣。

负载火车y = y + 0.1 * randn(大小(y));

原始信号可以绘制在黑色。首先,我们必须建立一个时间采样频率向量Fs:

t =(0:长度(y) 1) / Fs;情节(t y“k -”,“线宽”,1)箱;轴包含的时间(秒)持有

如果你有扬声器是这样的:你可以听火车的汽笛声

soundsc (y, Fs)

高通滤波器火车汽笛,只保留频率高于750赫兹和情节上面的黑色的信号:

yhp = filt1 (“惠普”,y,“fs”Fs,“俱乐部”,750);持有情节(t, yhp“r”)

或者你想低通滤波器原始信号消除频率低于1100赫兹。注意:我们指定一个采样频率通过设置一个以上“fs”价值。你可以另外定义一个向量作为独立的变量“x”。在这种情况下,独立变量是时间,但对于空间过滤它可能会累积距离以及一些路径。

火车汽笛的三个主要的频率间隔有点接近的频率空间,所以我们默认一阶巴特沃斯滤波器使用上面不会消除所有的能量低于750赫兹。您可能希望使用一个陡specifing滚边“秩序”,5。我们会画出低通滤波用蓝色火车汽笛。

ylp = filt1 (“资讯”,y,“x”t“俱乐部”,1100,“秩序”5);情节(t, ylp“b”)

使用plotpsd比较:

图plotpsd (y, Fs,“k”,“线宽”,2)plotpsd (yhp Fs,“r”)plotpsd (ylp Fs,“b”)包含的频率(赫兹)轴([600 1300 0 0.02])传说(原始信号的,“高反差保留800赫兹”,“低通1100赫兹”,“位置”,“西北”传说)boxoff
清晰的变量关闭所有

示例2:地形剖面

假设您有一个地形剖面高程测量每10米40公里。假设这个概要文件有三个主导波长——761米,4公里,9.4米。这个概要文件可能看起来像这样。在例1中,我使用plotpsd画一个周期图。

SpatialRes = 10;%样本每10 mx = 0: SpatialRes: 40 e3;域% 0到40公里λ₁= 761;% 761米lambda2 = 4000;% 4公里lambda3 = 3000 *π;% ~ 9.4公里%生成配置文件:y =兰德(大小(x)) + 5 * sin(2 *π* x /λ₁)+11 * sin(2 *π* x / lambda2) + 15 *罪(2 *π* x / lambda3);%剧情简介:图(“位置”,100 100 560 506)次要情节(211)情节(x / 1000, y,“k”,“线宽”,2)包含沿着一些路径的距离(公里)ylabel的高度(米)盒子%绘制功率谱:次要情节(212)plotpsd (y, x,“k”,“线宽”2,“数据库”,“日志”,“λ”)举行包含的波长(公里)ylabel的功率谱(dB)ylim(70年[-10])

上面你可以看到三个主要与三峰波长周期图。

也许你想elimiate高频随机噪声我们添加到地形兰德。要做到这一点,你可以低通滤波器wavelenths短于300:

ylo = filt1 (“资讯”,y,“x”,x,“lambdac”,300);次要情节(211)情节(x / 1000, ylo,“r”)次要情节(212)plotpsd (ylo x,“r”,“数据库”,“日志”,“λ”)

上面,当我们低通滤波器过滤我们指定数组的地形x距离对应的必经之路y。或者,我们可以指定空间分辨率这是我们抽样的距离“t”实现相同的结果。下面我们高通滤波器的原始地形去除波长超过6公里。使用紧滚边通过指定一个5阶巴特沃斯滤波器。

yhi = filt1 (“惠普”,y,“t”SpatialRes,“lambdac”,6000,“秩序”5);次要情节(211)情节(x / 1000, yhi,“b”)次要情节(212)plotpsd (yhi x,“b”,“数据库”,“日志”,“λ”)

也许你想要删除高频噪声和低频。你可以通过过滤信号两次,或用带通滤波器。我们只能保留中间的峰值功率谱的带通滤波所有波长短于或超过3000米

ybp = filt1 (“英国石油公司”,y,“x”,x,“lambdac”(3000 5000),“秩序”3);次要情节(211)情节(x / 1000, ybp,“米”)次要情节(212)plotpsd (ybp x,“米”,“数据库”,“日志”,“λ”)

也许你想要删除的频率范围。你可以通过减去bandpassed信号从原始信号拉:

yb = y - ybp;

或者你可以使用相同的语法创建一个bandstop过滤器直接与我们的带通滤波器:

yb = filt1 (“废话”,y,“x”,x,“lambdac”(3000 5000),“秩序”3);次要情节(211)情节(x / 1000, yb,“颜色”,(。98 .45 02])次要情节(212)plotpsd (yb, x,“颜色”,(。98 .45 .02点),“数据库”,“日志”,“λ”)传说(“原始”,低通滤波器的,“高反差保留”,“带通”,“bandstop”,“位置”,“东北”传说)boxoff

示例3:海冰范围

负荷时间序列的海冰范围的例子中,并且只使用数据从1989年向在场,因为旧的数据采样分辨率小于每日。

负载seaice_extent.mat%得到1989后指数:印第安纳州= t > datetime(1989年,1,1);%削减1989 - 2018年的数据集:t = t(印第安纳州);extent_N = extent_N(印第安纳州);图绘制(t, extent_N)轴盒子ylabel北半球的海冰范围(10 ^ 6公里^ 2)”

我们可以过滤掉季节性周期?当然,deseason函数是一种方式,但是如果我们做这个巴特沃斯滤波器?bandstop过滤器的季节性周期要求我们定义拐角频率,那么一切都在6月和2年?

extent_N_filt = filt1 (“废话”extent_N,“fs”,365.25,“Tc”(0.5 - 2));持有情节(t, extent_N_filt“线宽”,2)

示例4:网格三维时间序列

猜你感兴趣的太平洋在墨西哥湾(傻子):

负载pacific_sst图imagescn(经度,纬度,意味着(sst, 3)) cmocean% colormap持有%墨西哥湾的原油大纲:gomlon = (-91.4 -103.8 -98.8 -88.6 -82.8 - -82.3);gomlat = (33.0 30.6 20.4 16.6 21.8 - 34.1);情节(gomlon gomlat,“罗”)文本(-92.4,23.9,“墨西哥湾”,“颜色”,“红色”,“水平的”,“中心”,“绿色”,“机器人”)%设置文本对齐方式

我们可以使用geomask当地的得到一个时间序列的傻子太平洋。首先,让面具和情节是一个蓝色的轮廓就确保面具在正确的地点:

(经度、纬度)= meshgrid(经度、纬度);掩码= geomask(纬度、经度、gomlat gomlon);轮廓(经度、纬度、双(面具),(0.5 - 0.5),“b”)

面具定义,得到一个一维时间序列的意思是太平洋在墨西哥湾很容易:

sst_gom =当地(sst,面具,“omitnan”);图绘制(t, sst_gom)轴datetick (“x”,“keeplimits”)ylabel“墨西哥湾海面温度\ circC”

这个数据集是在每月的时间分辨率,所以如果我们想低通滤波器,只保留频率与时间超过18个月,我们可以操作1 dsst1数据集是这样的:

%低通滤波器过滤1 d sst1:sst_gom_lp = filt1 (“资讯”sst_gom,“Tc”,18);持有情节(t, sst_gom_lp)传说(“原始”,“低通滤波器过滤”)

你会注意到仍然有充足的能量频率1年。这是因为巴特沃斯滤波器并不理想,在频率空间广阔的野花。更有效地提高起来,削减能源比18个月时间短,提高过滤器的顺序:

%低通滤波器过滤1 d sst1:sst_gom_lp5 = filt1 (“资讯”sst_gom,“Tc”,18岁,“秩序”5);情节(t, sst_gom_lp5)传说(“原始”,“低通滤波器过滤”,“低通5日订单”)

现在你看到一些年际变化不太主要的季节性周期。这可能不是一个好主意是过滤掉大部分的变化在任何应用程序中,但是在这里我们只是玩弄的力学功能,所以我们就说它很好,继续前进。

但如果,而不是过滤的一维数组,你想过滤时间序列在每个网格单元?计算效率低下的方法将嵌套循环,通过网格的每一行和每一列,所有65 x55网格细胞。但那将意味着3000多次执行相同的操作,即使对于这粗网格!幸运的是,filt1可以更有效地做。如果自风场是一个三维矩阵,filt1已经知道操作第三维,虽然你总是可以指定“暗”,3如果你想要额外的肯定。

下面是如何过滤整个海温时间序列使用3 d网格filt1:

sst_lp = filt1 (“资讯”风场,“Tc”,18);

现在我们可以看看当地的傻子时间序列过滤后的3 d海温资料,应该完全吻合:

sst_lp_gom =当地(sst_lp,面具,“omitnan”);情节(t, sst_lp_gom)传说(“原始”,“低通滤波器过滤”,“低通5日订单”,”当地一阶滤波器后的)

事实上,当地时间系列的过滤SST电网给出相同的结果作为过滤餐当地时间系列。这是直接比较,因为阴谋上面有点忙:

图绘制(sst_lp_gom sst_gom_lp,“。”)包含“先过滤,然后在本地平均”ylabel“先局部平均,然后过滤”

两者的区别只是数值噪音。

作者信息

这个函数的一部分气候数据为Matlab工具箱。的功能和支持文档是乍得a·格林写的金宝app德州大学奥斯丁分校。