当前位置:文档之家› 经典matlab信号处理基础知识

经典matlab信号处理基础知识

常用函数1 图形化信号处理工具,fdatool(滤波器设计),fvtool(图形化滤波器参数查看)sptool (信号处理),fvtool(b,a),wintool窗函数设计.或者使用工具箱filter design设计。

当使用离散的福利叶变换方法分析频域中的信号时,傅里叶变换时可能引起漏谱,因此需要采用平滑窗,2数字滤波器和采样频率的关系。

如果一个数字滤波器的采样率为FS,那么这个滤波器的分析带宽为Fs/2。

也就是说这个滤波器只可以分析[0,Fs/2]的信号.举个例字:有两个信号,S1频率为20KHz,S2频率为40KHz,要通过数字方法滤除S2。

你的滤波器的采样率至少要为Fs=80HKz,否则就分析不到S2了,更不可能将它滤掉了!(当然根据采样定理,你的采样率F0也必须大于80HK,,Fs和F0之间没关系不大,可以任取,只要满足上述关系就行。

)3两组数据的相关性分析r=corrcoef(x,y)4 expm 求矩阵的整体的exp4离散快速傅里叶fft信号处理中,傅里叶变换的典型用途是将信号分解成幅值分量和频率分量)。

Ft为连续傅里叶变换。

反傅里叶ifft5 ztrans(),Z变换是把离散的数字信号从时域转为频率6 laplace()拉普拉斯变换是把连续的的信号从时域转为频域7 sound(x)会在音响里产生x所对应的声音8 norm求范数,det行列式,rank求秩9 模拟频率,数字频率,模拟角频率关系模拟频率f:每秒经历多少个周期,单位Hz,即1/s;模拟角频率Ω是指每秒经历多少弧度,单位rad/s;数字频率w:每个采样点间隔之间的弧度,单位rad。

Ω=2pi*f; w = Ω*T10 RMS求法Rms = sqrt(sum(P.^2))或者norm(x)/sqrt(length(x)var方差的开方是std标准差,RMS应该是norm(x)/sqrt(length(x))吧. 求矩阵的RMS:std(A(:))11ftshift 作用:将零频点移到频谱的中间12 filtfilt零相位滤波,采用两次滤波消除系统的非线性相位,y = filtfilt(b,a,x);注意x的长度必须是滤波器阶数的3倍以上,滤波器的阶数由max(length(b)-1,length(a)-1)确定。

13 [h,t]=impz(b,a,n,fs),计算滤波器的冲激响应 h为n点冲击响应向量[h,x]=freqz(b,a,n,fs)计算频响,有fs时,x为频率f,无fs,x为w角频率,常用于查看滤波器的频率特性14 zplane(z,p) 画图零极点分布图15 beta=unwarp(alpha) 相位会在穿越+-180发生回绕,可将回绕的16 stepz 求数字滤波器的阶跃响应[h,t] = stepz(b,a,n,fs)fvtool(b1,a1,b2,a2,...bn,an) fvtool(Hd1,Hd2,...) h = fvtool(...)15 IIR数字滤波器设计方法1 先根据已知带同参数求出最佳滤波器阶数和截止频率[n,Wn] = buttord(Wp,Ws,Rp,Rs);[n,Wn] = buttord(Wp,Ws,Rp,Rs,'s')[b,a]=butter(n,Wn,’ftype’,’s’)其中Wp为,0-1之间。

Ws为阻带角频率,0-1之间。

Rp为通带波纹,或者通带衰减,Rs为阻带衰减。

若果给出的是模拟频率fp1通带截止频率,fp2阻带截止频率,则Wp=fp1*2/fs, Ws=fp2*2/fs.如果给出的是实际数字频率比如0.3*pi,如果给出的是y=filter(b,a,x);或者采用零相位滤波y=filtfilt(b,a,x)15 传统FIR滤波器Ftype为滤波器类型,比如高通,低通,window为窗函数类型。

Window—窗函数。

例子1 设计一个通带滤波器,带宽为0.35-0.65b = fir1(48,[0.35 0.65]);freqz(b,1,512)16窗函数长度:窗函数的长度应等于FIR滤波器系数个数,即滤波器阶数n+1。

17 加窗函数的FIR滤波器长度的确定17.1 buttord函数求出最佳滤波器阶数和截止频率,然后用fir1函数调用,窗函数长度为滤波器最佳阶数n+117.2 用窗函数方法设计FIR滤波器,由滤波器的过渡带的宽度和选择的窗函数决定这里举一个选用海明窗函数设计低通滤波器的例子。

低通滤波器的设计要求是:采样频率为100Hz,通带截至频率为3 Hz,阻带截止频率为5 Hz,通带内最大衰减不高于0.5 dB,阻带最小衰减不小于50 dB。

使用海明窗函数。

确定N的步骤有:1,从上表可查得海明窗的精确过渡带宽为 6.6pi/N;(在有些书中用近似过渡带来计算,这当然没有错,但阶数增大了,相应也增加计算量。

)2,本低通滤波器的过渡带是:DeltaW=Ws-Wp=(5-3)*pi/50=.04pi3,N=6.6pi/DeltaW=6.6pi /0.04pi=165所以滤波器的阶数至少是165。

在该帖子中是用理想低通滤波器的方法来计算的,这里用fir1函数来计算,相应的程序有fs=100; % 采样频率wp = 3*pi/50; ws = 5*pi/50;deltaw= ws - wp; % 过渡带宽Δω的计算N = ceil(6.6*pi/ deltaw) + 1; % 按海明窗计算所需的滤波器阶数N0wdham = (hamming(N+1))'; % 海明窗计算Wn=(3+5)/100; % 计算截止频率b=fir1(N,Wn,wdham);[H,w]=freqz(b,1);db=20*log10(abs(H));% 画频响曲线plot(w*fs/(2*pi),db);title(' 幅度响应(单位: dB)');gridaxis([0 50 -100 10]); xlabel('频率(单位:Hz)'); ylabel('分贝')set(gca,'XTickMode','manual','XTick',[0,3,5,50])set(gca,'YTickMode','manual','YTick',[-50,0])17 数字滤波器函数Butter,cheyshev切比雪夫[b,a]=cheby1(n,rp,wn,options), [b,a]=besself(n,wn,options)[b,a]=ellip((n,rp,rs,wn,options) n为阶数,wn为截止频率rad/s,rs 为阻带起伏.wn在0-1之间,且1对应于采样频率的一半。

[b,a]=butter(n,Wn,options),[z,p,k] = butter(n,Wn,'ftype','s')[z,p,k] = butter(n,Wn,'ftype')A,B,C,D] = butter(n,Wn,'ftype','s')‘ftype’对应'high' 是高通滤波器的归一化截止频率'low' 低通滤波器的归一化截止频率'stop' for an order 2*n bandstop digital filter if Wn is a two-element vector, Wn = [w1 w2]. The stopband is w1 < ω < w2.21 窗函数1 矩形窗: Window=boxcar(8);b=fir1(7,0.4,Window);freqz(b,1)2 blackman窗: Window=blackman(8);b=fir1(7,0.4,Window);freqz(b,1)3 hamming;4 hanning;5 kaiser滤波器阶数估计[n,fo,ao,w] = firpmord(f,a,dev)fs = 2000; % Sampling frequencyf = [500 600]; % Cutoff frequenciesa = [1 0]; % Desired amplitudesdev = [(10^(rp/20)-1)/(10^(rp/20)+1) 10^(-rs/20)];[n,fo,ao,w] = firpmord(f,a,dev,fs);b = firpm(n,fo,ao,w);freqz(b,1,1024,fs);18 y=resample(x,p,q)数字信号中的重采样。

这时输出信号y的采样频率就是x的p/q倍,其长度为length(x)*p/q19 conv 卷积 deconv 反卷积或者求多项式乘法。

xcorr互相关函数 cov协方差 fft2二维FFT fft2二维FFT逆变换xcorr2 ,conv2 二维卷积20 平滑滤波filter函数首先要设计好滤波器,然后调用filter.平滑滤波似乎有些过时,b utterworth才显得稍微有些技术含量用法。

filter本身作用是求卷积和convfilter(B,1,X,[],dim);dim缺省为1,是按列滤波的,如果改为2,则是按行滤波。

y = filter(b, a, x),其中b,a为滤波器系数。

计算系统在输入x作用下的零状态响应y[k] 举例:计算低通滤波器的冲激响应例题1 点平均滤波f1=3;f2=40;fs=100;t=0:1/fs:1;x=sin(2*pi*t*f1)+.25*sin(2*pi*t*f2);b=ones(1,10)/10; y=filter(b,1,x);求冲激响应stem(y);yy=filtfilt(b,1,x);plot(t,x);hold on;plot(t,x,'r',t,yy,'g')例2利用filter函数求滑动平均Matlab有多种计算滑动平均的方法,现介绍基于filter函数的计算方法。

设原始数据为x,平均窗口设为a(a为正整数),那么无权重滑动平均后的数据y为:windowSize = a;y=filter(ones(1,windowSize)/windowSize,1,x);上述命令实际上计算的是:y(1)=(1/a)*x(1);y(2)=(1/a)*x(2)+(1/a)*x(1);y(a)=(1/a)*x(a)+(1/a)*x(a-1)+...+(1/a)*x(1);y(i)=(1/a)*x(i)+(1/a)*x(i-1)+...+(1/a)*x(i-a+1);4. frezq数字滤波器的频率响应[H, W]=freqz(B, A, N) 当N是一个整数时返回N点的频率向量H和N点的幅频响应向量W。

相关主题