数字信号处理中涉及的MATLAB子函数.docx
《数字信号处理中涉及的MATLAB子函数.docx》由会员分享,可在线阅读,更多相关《数字信号处理中涉及的MATLAB子函数.docx(15页珍藏版)》请在冰豆网上搜索。
数字信号处理中涉及的MATLAB子函数
实验涉及的MATLAB子函数
plot
功能:
按线性比例关系,在x和y两个方向上绘制二维图形。
调用格式:
plot(x,y);%绘制以x为横轴、y为纵轴的线性图形。
plot(x1,y1,x2,y2,…);%在同一坐标系上绘制多组x元素对y元素的线性图形。
subplot
功能:
建立子图轴系,在同一图形界面上产生多个绘图区间。
调用格式:
subplot(m,n,i);%在同一图形界面上产生一个m行n列的子图轴系,在第i个子图位置上作图。
figure
新建图形窗口
clearall;
功能:
清空存储空间。
clc;
功能:
清空命令窗。
close;
功能:
关闭当前图形窗口。
clf;
功能:
清空当前图形窗口。
stem
功能:
绘制二维脉冲杆图(离散序列)图形。
调用格式:
stem(x,y);%绘制以x为横轴、y为纵轴的脉冲杆图图形。
hold
功能:
控制当前图形是否刷新的双向切换开关。
调用格式:
holdon;%使当前轴及图形保持而不被刷新,准备接受此后将绘制的新曲线。
holdoff;%使当前轴及图形不再具备不被刷新的性质。
即将holdon与holdoff之间的图形画在一张图上。
title
功能:
在图形的上方标注图名。
调用格式:
title('string');%在图形的上方标注由字符串表示的图名,其中string的内容可以是中文或英文。
xlabel
功能:
在横坐标的下方标注说明。
调用格式:
xlabel('string');%在横坐标的下方标注说明,其中string的内容可以是中文或英文。
ylabel
功能:
在纵坐标的左侧标注说明。
调用格式:
ylabel('string');%在纵坐标的左侧标注说明,其中string的内容可以是中文或英文。
axis
功能:
限定图形坐标的范围。
调用格式:
axis([x1,x2,y1,y2]);%在横坐标起点为x1、终点为x2,纵坐标起点为y1、终点为y2的范围内作图。
grid
功能:
在指定的图形坐标上绘制分格线。
调用格式:
grid紧跟在要绘制分格线的绘图指令后面。
例如:
plot(t,y);grid
gridon绘制分格线。
gridoff不绘制分格线。
text
功能:
在图形上标注文字说明。
调用格式:
text(xt,yt,'string');%在图面上(xt,yt)坐标处书写文字说明。
其中文字说明字符串必须使用单引号标注。
set
功能:
设置图形对象属性。
调用格式:
set(gca,'Xtick',xs,'Ytick',ys);%二维坐标刻度设置。
set(gca,'Xtick',xs,'Ytick',ys,'Ztick',zs);%三维坐标刻度设置。
xs,ys,zs可以是任何合法的实数向量,分别决定了x,y,z轴的刻度。
pause
功能:
暂停执行文件。
调用格式:
pause;%暂停执行文件,等待用户按任意键继续。
pause(n);%在继续执行之前,暂停n秒。
length
功能:
取某一变量的长度(采样点数)。
调用格式:
N=length(n);%取变量n的采样点个数,赋给变量N。
ceil
功能:
圆整到最近的大于等于A的整数。
调用格式:
B=ceil(A)
mod
功能:
模除求余。
调用格式:
mod(x,m);%x整除m取正余数。
floor
功能:
向-∞舍入为整数。
调用格式:
floor(x);%将x向-∞舍入为整数。
rand
功能:
产生rand随机信号。
调用格式:
x=rand(n,m);%用于产生一组具有n行m列的随机信号。
abs
功能:
求绝对值(幅值)。
调用格式:
y=abs(x);%用于计算x的绝对值。
当x为复数时,得到的是复数模(幅值),即
square
功能:
产生矩形波。
调用格式:
x=square(t);%类似于sin(t),产生周期为2p,幅值为±1的方波。
x=square(t,duty);%产生指定周期的矩形波,其中duty用于指定脉冲宽度与整个周期的比例。
sum
功能:
求各元素之和。
调用格式:
Z=sum(x);%求各元素之和,常用于等宽数组求定积分。
fliplr
功能:
对矩阵行元素进行左右翻转。
调用格式:
x1=fliplr(x);%将x的行元素进行左右翻转,赋给变量x1。
angle
功能:
求相角。
调用格式:
p=angle(h);%用于求取复矢量或复矩阵H的相角(以弧度为单位),相角介于-p和+p之间。
real
功能:
取某一复数的实部。
调用格式:
real(h);%取复数h的实部。
x=real(h);%取复数h的实部,赋给变量x。
imag
功能:
取某一复数的虚部。
调用格式:
imag(h);%取复数h的虚部。
y=imag(h);%取复数h的虚部,赋给变量y。
zeros(M,N)
M行N列的全零矩阵
ones(M,N)
M行N列的全1矩阵
impz
功能:
求解数字系统的冲激响应。
调用格式:
[h,t]=impz(b,a);%求解数字系统的冲激响应h,取样点数为缺省值。
[h,t]=impz(b,a,n);%求解数字系统的冲激响应h,取样点数由n确定。
impz(b,a);%在当前窗口用stem(t,h)函数出图。
dstep
功能:
求解数字系统的阶跃响应。
调用格式:
[h,t]=dstep(b,a);%求解数字系统的阶跃响应h,取样点数为缺省值。
[h,t]=dstep(b,a,n);%求解数字系统的阶跃响应h,取样点数由n确定。
dstep(b,a);%在当前窗口用stairs(t,h)函数出图。
zplane
功能:
显示离散系统的零极点分布图。
调用格式:
zplane(z,p);%绘制由列向量z确定的零点、列向量p确定的极点构成的零极点分布图。
zplane(b,a);%绘制由行向量b和a构成的系统函数确定的零极点分布图。
[hz,hp,ht]=zplane(z,p);%执行后可得到3个句柄向量:
hz为零点线句柄,hp为极点线句柄,ht为坐标轴、单位圆及文本对象的句柄。
conv
功能:
进行两个序列间的卷积运算。
调用格式:
y=conv(x,h);%用于求取两个有限长序列x和h的卷积,y的长度取x、h长度之和减1。
例如,x(n)和h(n)的长度分别为M和N,则y=conv(x,h),y的长度为N+M-1。
使用注意事项:
conv默认两个信号的时间序列从n=0开始,因此默认y对应的时间序号也从n=0开始。
filter
功能:
对数字系统的输入信号进行滤波处理。
调用格式:
y=filter(b,a,x);%对于由矢量a、b定义的数字系统,当输入信号为x时,对x中的数据进行滤波,结果放于y中。
[y,zf]=filter(b,a,x);%除得到结果矢量y外,还得到x的最终状态矢量zf。
y=filter(b,a,x,zi);%可在zi中指定x的初始状态。
filtic
功能:
为filter函数选择初始条件。
调用格式:
z=filtic(b,a,y,x);%求给定输入x和y时的初始状态。
z=filtic(b,a,y);%求x=0,给定输入y时的初始状态。
其中,矢量x和y分别表示过去的输入和输出:
x=[x(-1),x(-2),…,x(-N)]
y=[y(-1),y(-2),…,y(-N)]
fftfilt
功能:
基于FFT算法对数字系统的输入信号进行FIR滤波处理。
调用格式:
y=fftfilt(b,x);%对于由矢量b定义的数字系统,当输入信号为x时,对x中的数据进行滤波,结果放于y中。
fft
功能:
一维快速傅里叶变换(FFT)。
调用格式:
y=fft(x);%利用FFT算法计算矢量x的离散傅里叶变换,当x为矩阵时,y为矩阵x每一列的FFT。
当x的长度为2的幂次方时,则fft函数采用基2的FFT算法,否则采用稍慢的混合基算法。
y=fft(x,n);%采用n点FFT。
当x的长度小于n时,fft函数在x的尾部补零,以构成n点数据;当x的长度大于n时,fft函数会截断序列x。
当x为矩阵时,fft函数按类似的方式处理列长度。
ifft
功能:
一维快速傅里叶逆变换(IFFT)。
调用格式:
y=ifft(x);%用于计算矢量x的IFFT。
当x为矩阵时,计算所得的y为矩阵x中每一列的IFFT。
y=ifft(x,n);%采用n点IFFT。
当length(x)n时,将x截断,使length(x)=n。
fftshift
功能:
对fft的输出进行重新排列,将零频分量移到频谱的中心。
调用格式:
y=fftshift(x);%对fft的输出进行重新排列,将零频分量移到频谱的中心。
当x为向量时,fftshift(x)直接将x中的左右两半交换而产生y。
当x为矩阵时,fftshift(x)同时将x的左右、上下进行交换而产生y。
freqz
功能:
用于求解离散时间系统的频率响应函数
。
调用格式:
[h,w]=freqz(b,a,n);%可得到数字滤波器的n点幅频响应值,这n个点均匀地分布在[0,p]上,并将这n个频点的频率记录在w中,相应的频响值记录在h中。
缺省时n=512。
[h,f]=freqz(b,a,n,Fs);%用于对
在[0,Fs/2]上等间隔采样n点,采样点频率及相应频响值分别记录在f和h中。
由用户指定Fs(以Hz为单位)的值。
h=freqz(b,a,w);%用于对
在[0,2p]上进行采样,采样频率点由矢量w指定。
h=freqz(b,a,f,Fs);%用于对
在[0,Fs]上采样,采样频率点由矢量f指定。
freqz(b,a,n);%用于在当前图形窗口中绘制幅频和相频特性曲线。
buttord
功能:
确定巴特沃斯(Butterworth)滤波器的阶数和3dB截止频率。
调用格式:
[n,wn]=buttord(wp,ws,Rp,As,'s');%计算巴特沃斯模拟滤波器的阶数和3dB截止频率。
wp、ws可以是实际的频率值或角频率值,wn将取相同的量纲。
Rp为通带最大衰减指标,As为阻带最小衰减指标。
[n,wn]=buttord(wp,ws,Rp,As);%计算巴特沃斯数字滤波器的阶数和3dB截止频率。
其中,0≤wp(或ws)≤1,其值为1时表示0.5Fs。
Rp为通带最大衰减指标,As为阻带最小衰减指标。
当wp>ws时,为高通滤波器;当wp、ws为二元向量时,为带通或带阻滤波器,此时wn也为二元向量。
cheb1ord
功能:
确定切比雪夫(Chebyshev)Ⅰ型滤波器的阶数和通带截止频率。
调用格式:
[n,wn]=cheb1ord(wp,ws,Rp,As,'s');%计算切比雪夫Ⅰ型模拟滤波器的阶数和通带截止频率。
wp、ws可以是实际的频率值或角频率值,wn将取相同的量纲。
Rp为通带最大衰减指标,As为阻带最小衰减指标。
[n,wn]=cheb1ord(wp,ws,Rp,As);%计算切比雪夫Ⅰ型数字滤波器的阶数和通带截止频率。
其中,0≤wp(或ws)≤1,其值为1时表示0.5Fs。
Rp为通带最大衰减指标,As为阻带最小衰减指标。
当wp>ws时,为高通滤波器;当wp、ws为二元向量时,则为带通或带阻滤波器,此时wn也为二元向量。
cheb2ord
功能:
确定切比雪夫(Chebyshev)Ⅱ型滤波器的阶数和阻带截止频率。
调用格式:
[n,wn]=cheb2ord(wp,ws,Rp,As,'s');%计算切比雪夫Ⅱ型模拟滤波器的阶数和阻带截止频率。
wp、ws可以是实际的频率值或角频率值,wn将取相同的量纲。
Rp为通带最大衰减指标,As为阻带最小衰减指标。
[n,wn]=cheb2ord(wp,ws,Rp,As);%计算切比雪夫Ⅱ型数字滤波器的阶数和阻带截止频率。
其中,0≤wp(或ws)≤1,其值为1时表示0.5Fs。
Rp为通带最大衰减指标,As为阻带最小衰减指标。
当wp>ws时,为高通滤波器;当wp、ws为二元向量时,为带通或带阻滤波器,此时wn也为二元向量。
ellipord
功能:
确定椭圆(Ellipse)滤波器的阶数和通带截止频率。
调用格式:
[n,wn]=ellipord(wp,ws,Rp,As,'s');%计算椭圆模拟滤波器的阶数和通带截止频率。
wp、ws可以是实际的频率值或角频率值,wn将取相同的量纲。
Rp为通带最大衰减指标,As为阻带最小衰减指标。
[n,wn]=ellipord(wp,ws,Rp,As);%计算椭圆数字滤波器的阶数和通带截止频率。
其中,0≤wp(或ws)≤1,其值为1时表示0.5Fs。
Rp为通带最大衰减指标,As为阻带最小衰减指标。
当wp>ws时,为高通滤波器;当wp、ws为二元向量时,为带通或带阻滤波器,此时wn也为二元向量。
butter
功能:
巴特沃斯(Butterworth)模拟或数字滤波器设计。
调用格式:
[b,a]=butter(n,wn,'s');%设计截止频率为wn的n阶巴特沃斯模拟低通或带通滤波器,其中wn>0。
[b,a]=butter(n,wn,'ftype','s');%设计截止频率为wn的n阶巴特沃斯模拟高通或带阻滤波器。
ftype=high时,设计高通滤波器;ftype=stop时,设计带阻滤波器,此时wn=[w1,w2]。
[b,a]=butter(n,wn);%设计截止频率为wn的n阶巴特沃斯数字滤波器。
其中,截止频率是幅度下降到3dB处的频率。
wn∈[0,1],1对应0.5Fs(取样频率)。
wn=[w1,w2]时,产生数字带通滤波器。
[b,a]=butter(n,wn,'ftype');%可设计高通和带阻数字滤波器。
cheby1
功能:
切比雪夫Ⅰ型滤波器设计(通带等波纹)。
调用格式:
[b,a]=cheby1(n,Rp,Wn,'s');%设计切比雪夫Ⅰ型模拟低通和带通滤波器。
[b,a]=cheby1(n,Rp,Wn,'ftype','s');%设计模拟高通和带阻滤波器。
[b,a]=cheby1(n,Rp,Wn);%设计截止频率为wn的n阶切比雪夫Ⅰ型数字低通和带通滤波器。
[b,a]=cheby1(n,Rp,Wn,'ftype');%设计截止频率为wn的n阶切比雪夫Ⅰ型数字高通和带阻滤波器。
说明:
切比雪夫Ⅰ型滤波器其通带内为等波纹,阻带内为单调。
切比雪夫Ⅰ型滤波器的下降斜率比Ⅱ型大,但其代价是在通带内的波纹较大。
与butter函数类似,cheby1函数可设计数字域和模拟域的切比雪夫Ⅰ型滤波器,其通带内的波纹由Rp(分贝)确定。
其它各公式的使用方法与butter函数相同,可参考相应公式。
cheby2
功能:
切比雪夫Ⅱ型滤波器设计(阻带等波纹)。
调用格式:
[b,a]=cheby2(n,As,Wn,'s');%设计切比雪夫Ⅱ型模拟低通和带通滤波器。
[b,a]=cheby2(n,As,Wn,'ftype','s');%设计模拟高通和带阻滤波器。
[b,a]=cheby2(n,As,Wn);%设计截止频率为wn的n阶切比雪夫Ⅱ型数字低通和带通滤波器。
[b,a]=cheby2(n,As,Wn,'ftype');%设计截止频率为wn的n阶切比雪夫Ⅱ型数字高通和带阻滤波器。
说明:
cheby2函数其通带内为单调,阻带内为等波纹,因此,由As确定阻带内的波纹。
其它各公式的使用方法与butter函数相同,可参考相应公式。
ellip
功能:
椭圆滤波器设计。
调用格式:
[b,a]=ellip(n,Rp,As,Wn,'s');%设计椭圆模拟低通和带通滤波器。
[b,a]=ellip(n,Rp,As,Wn,'ftype','s');%设计模拟高通和带阻滤波器。
[b,a]=ellip(n,Rp,As,Wn);%设计截止频率为wn的n阶椭圆数字低通和带通滤波器。
[b,a]=ellip(n,Rp,As,Wn,'ftype');%设计截止频率为wn的n阶椭圆数字高通和带阻滤波器。
ellip函数可得到下降斜度更大的滤波器,但在通带和阻带内均为等波动的。
椭圆滤波器能以最低的阶数实现指定的性能。
bilinear
功能:
双线性变换——将s域(模拟域)映射到z域(数字域)的标准方法,将模拟滤波器变换成离散等效滤波器。
调用格式:
[numd,dend]=bilinear(num,den,Fs);%将模拟域传递函数变换为数字域传递函数,Fs为取样频率。
[numd,dend]=bilinear(num,den,Fs,Fp);%将模拟域传递函数变换为数字域传递函数,Fs为取样频率,Fp为通带截止频率。
[zd,pd,kd]=bilinear(z,p,k,Fs);%将模拟域零极点增益系数变换到数字域,Fs为取样频率。
[zd,pd,kd]=bilinear(z,p,k,Fs,Fp);%将模拟域零极点增益系数变换到数字域,Fs为取样频率,Fp为通带截止频率。
[Ad,Bd,Cd,Dd]=bilinear(A,B,C,D,Fs);%将模拟域状态变量系数变换到数字域,Fs为取样频率。
impinvar
功能:
用脉冲响应不变法实现模拟到数字的滤波器变换。
调用格式:
[bd,ad]=impinvar(b,a,Fs);%将模拟滤波器系数b、a变换成数字的滤波器系数bd、ad,两者的冲激响应不变。
[bd,ad]=impinvar(b,a);%采用Fs的缺省值1Hz。
boxcar
功能:
矩形窗。
格式:
w=boxcar(n)
说明:
boxcar(n)函数可产生一长度为n的矩形窗函数。
hanning
功能:
hanning(汉宁)窗。
格式:
w=hanning(n)
说明:
hanning(n)可产生n点的hanning窗。
hanning窗函数系数为
hamming
功能:
hamming(哈明)窗。
格式:
w=hamming(n)
说明:
hamming(n)可产生n点的hamming窗。
hamming窗函数系数为
blackman
功能:
blackman(布莱克曼)窗。
格式:
w=blackman(n)
说明:
blackman(n)可产生n点的blackman窗。
blackman窗函数系数为
与等长度的hamming和hanning窗相比,blackman窗的主瓣稍宽,旁瓣稍低。
kaiser
功能:
kaiser(凯塞)窗。
格式:
w=kaiser(n,beta)
说明:
kaiser(n,beta)可产生n点的kaiser窗函数,其中,beta为影响窗函数旁瓣的
参数,其最小的旁瓣抑制
与
之间的关系为
增加
可使主瓣变宽、旁瓣的幅度降低。
fir1
功能:
基于窗函数的FIR数字滤波器设计——标准频率响应,以经典方法实现加窗线性相位FIR滤波器设计,可设计出标准的低通、带通、高通和带阻滤波器。
格式:
b=fir1(n,Wn);%设计截止频率为Wn的hamming(哈明)加窗线性相位滤波器,滤波器系数包含在b中。
当0≤Wn≤1(Wn=1相应于0.5fs)时,可得到n阶低通FIR滤波器。
当Wn=[W1W2]时,fir1函数可得到带通滤波器,其通带为
1<
<
2。
b=fir1(n,Wn,’ftype’);%可设计高通和带阻滤波器,由ftype决定:
当ftype=high时,设计高通FIR滤波器;
当ftype=stop时,设计带阻FIR滤波器。
在设计高通和带阻滤波器时,fir1函数总是使用偶对称N为奇数(即第一类线性相位FIR滤波器)的结构,因此当输入的阶次为偶数时,fir1函数会自动加1。
b=fir1(n,Wn,Window);%利用列矢量Window中指定的窗函数进行滤波器设计,Window长度为n+1。
如果不指定Window参数,则fir1函数采用hamming窗。
b=fir1(n,Wn,’ftype’,Window);%可利用ftype和Window参数设计各种加窗的滤波器。
由fir1函数设计的FIR滤波器的群延迟为n/2。
MATLAB操作快速入门
MATLAB主界面
窗口显示信息
有问题的.m程序文件
File-Open(打开文件):
找到lab11.m文件所在的文件夹
CurrentDirectory(当前目录):
当前正在运行的.m文件所在的文件夹。
用户自编的、被调用的子函数需与主函数在同一个文件夹下
CommandWindow(命令窗):
1)显示指定变量的结果;
2)编程出错时,用红色字体显示出错的行、列及存在的问题(此例指出第7行15列不完整,从下面的m文件看到,该处缺右括号)
Workspace(工作空间):
放当前运行程序中所有变量的相关信息(数据类型、维数、具体值、波形)
注意:
1.文件名及文件夹名必须以英文字母开头,由英文字母和数字组成
2..m文件只有在MATLAB界面下打开时,才可点击Debug-Run,运行程序
3.对程序中不理解的语句可参考《实验涉及的MATLAB子函数.doc》获得解答