时序序列傅里叶变换及常用滤波算法

快速傅里叶变换具体理论及其讲解可以参考:https://blog.csdn.net/deng_sai/article/details/52473503
直接上代码,通俗易懂

function [y, f] = Spectrum_Calc(data,Fs)
    %data为时序序列,Fs为采样频率
    %信号长度
    l=size(data,1);
    %N取信号长度的2的整次方
    N=2^(nextpow2(l));
    y=abs(fft(data,N)/N*2);
    f=Fs/N*(0:1:N-1);
    %由于频谱计算是对称的,所以只需要取一半绘图即可
    y=y(1:N/2);
    f=f(1:N/2);
end

常用的滤波方法
data为时序列

%移动平均滤波(常用的平滑滤波)
windowSize = 5; %窗口长度
%b,a为计算参数
b = (1/windowSize)*ones(1,windowSize);
a = 1;
data1 = filter(b,a,data);
%巴特沃斯低通滤波
wn = 2*end_hz/Fs;         %end_hz为截止频率
[b,a] = butter(n,Wc);     
%n表示滤波器的阶数,需要根据需要选择合适的整数,该方法是留下小于截止频率的信号,如果是想要留下两个频率之间的信号则用 [b,a] = butter(n,[wn1,wn2])
data1 = filter(b,a,data);
%中值滤波
data1 = medfilt1(data,n);%n表示阶数
%小波滤波
[data1,cdata1,ldata1] = wden(data,tptr,sorh,scal,n,'wname');

小波函数通解
[xd,cxd,lxd]=wden(x,tptr,sorh,scal,n,‘wname’);
返回经过小波消噪处理后的信号xd及其小波分解结构。wname’);返回经过小波消噪处理后的信号xd及其小波分解结构。
输入参数tptr为阈值选择标准:
thr1=thselect(x,‘rigrsure’);%stein无偏估计;
thr2=thselect(x,‘heursure’);%启发式阈值;
thr3=thselect(x,‘sqtwolog’);%固定式阈值;
thr4=thselect(x,‘minimaxi’);%极大极小值阈值;
输出参数sorh为函数选择阈值使用方式:
Sorh=s,为软阈值;
Sorh=h,为硬阈值;
输入参数scal规定了阈值处理随噪声水平的变化:
Scal=one,不随噪声水平变化。
Scal=sln,根据第一层小波分解的噪声水平估计进行调整。
Scal=mln,根据每一层小波分解的噪声水平估计进行调整。
n为小波分解的层数;
wname选择不同类型的小波
`

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值