Matlab之round、fir1、fftfilt

一个去噪的代码:

function x=cleaninglownoise(x,fs,f0floor);
 
flm=50;
flp=round(fs*flm/1000);
nn=length(x);
wlp=fir1(flp*2,f0floor/(fs/2));
wlp(flp+1)=wlp(flp+1)-1;
wlp=-wlp;
 
tx=[x(:)' zeros(1,2*length(wlp))];
ttx=fftfilt(wlp,tx);
x=ttx((1:nn)+flp);
 
return;

看看用到了哪些函数:

round函数

round函数用于舍入到最接近(四舍五入)的整数。语法形式只有1种:Y = round(X),这里的X可以是数,向量,矩阵,输出对应。

举例:
1.数字

正数时:
round(2.1) = 2;
round(2.5) = 3;
round(2.8) = 3
负数时:
round(-2.1) = -2;
round(-2.5) = -3;
round(-2.8) = -3

2.列表

A = [2.3 4.7 -2.3 -4.7]round(A)

结果为:
2 5 -2 -5

3.矩阵

A = [2.1 4.7 8.9; 3.4 5.6 7.1; -9.8 -3.4 -2.5]round(A)

结果为:

   2     5     9
   3     6     7
 -10    -3    -3

fir1函数

基于窗函数的fir滤波器设计
主要形式:

b = fir1(n,Wn)
%使用汉明窗来设计具有线性相位的n阶低通,带通或多频FIR滤波器。滤波器类型取决于Wn的元素数量。

b = fir1(n,Wn,ftype)
%设计低通,高通,带通,带阻或多频带滤波器,取决于ftype的值和Wn的元素数量。

b = fir1(___,window)
%使用window中指定的向量和先前语法中的任何参数设计过滤器。

b = fir1(___,scaleopt)
%另外指定滤波器的幅度响应是否被归一化。

%注意:对于具有任意频率响应的窗口滤波器,请使用fir2。

n — 滤波器阶数。
Wn — 截止频率, 0≤Wn≤1,
Wn=1 对应于采样频率的一半。
数字角频率w、模拟角频率Ω之间的关系为 w=Ω/Fs,所以 w = 2pif/Fs ,f为模拟频率;

举例:
设计一个48阶FIR带通滤波器,通带为0.35π≤ω≤0.65π rad/ sample。
其幅度和相位响应。如下所示:

b = fir1(48,[0.35 0.65]);
freqz(b,1,512)

在这里插入图片描述

fftfilt函数

一般调用形式:

y=fftfilt(b,x)

该格式是利用基于FFT的重叠相加法对数据进行滤波,这种频域滤波技术只对FIR滤波器有效。该函数是通过向量b描述的滤波器对x数据进行滤波。
x是待滤波的信号;
b是FIR滤波器的H(z)的分子多项式系数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值