注意:此函数现在可以从IoSR Matlab工具箱中作为IoSR.dsp.vsmooth使用。
-------------------------
SMOOTH使用数学函数对向量执行加窗平滑
语法
Y=平滑(X,框架)
Y=平滑(X、帧、模式)
描述
Y=平滑(X,FRAME)通过计算一系列帧上的运行RMS来平滑输入向量X。FRAME指定框架特征;它可以设置为:
标量-这将用作帧的长度,窗口将是矩形的
向量-指定分析窗口的形状,帧长度为长度(帧)。
Y=平滑(X,FRAME,MODE)允许用户指定不同的数学平滑函数。选项包括:
“rms”-计算运行rms(默认)
“平均值”-计算运行平均值(移动平均值过滤器)
“中位数”-计算运行中位数
注:SMOOTH使用矢量化实现,当X和/或FRAME_LENGTH非常大时,该实现可能会很慢。用于计算的元素数量为长度(X)*FRAME_LENGTH。该算法通过创建索引矩阵并提取其对角线来矢量化操作。例如,对于长度为4且frame_length为2的向量,该算法创建一个临时的零填充矩阵x2,并从中创建一组索引:
1 1
2 2
3 3
4 4
5 5
6 6
然后提取对角线,其中-length(x2)+frame_length<=k<=0,得出:
1 2
2 3
3 4
4 5
这用于索引x2;然后沿行执行操作。