Matlab在数字信号处理中的应用(基础)
一、数据类型:
1、整数:Matlab支持8位,16位,32位和64位的有符号和无符号整数数据类型。 如:x=int8(50); %指定x的数据类型为int8. x=50
2、浮点数:matlab的默认数据类型是双精度类型(double),为了节省存蓄空间,matlab也支持单精度数据类型的数组。 Realmin(‘single’) Ans=
1.1755e-038 Realmax(‘double’) Ans=
2.2251e-308
3、复数:matlab中虚数单位由i或者j表示。 Z=6+7j
另一种创建复数的方法可以通过complex()函数,complex()函数的调用格式: C=complex(a,b),返回结果c为复数,实部是a,虚部是b。 二、数组的创建
1、一维数组的创建:创建一维行向量,只需要把所有数组元素用空格或者逗号分隔,并用方括号吧所有数组元素括起来即可。如用分号,即为列向量。
创建等差的一维数组:格式 Var=start-val:step:stop-val。如果步长是1,可以省略。 2、二维数组的创建;在创建二维数组时,用逗号或者空格区分同一行的不同元素,用分号或者软回车区分不同的行。 三、函数流程控制 1、顺序结构。
2、判断语句(if---else if---else----end). 3、循环语句(for----end) 四、作图
1、二维图:plot(x,y,linespec),linespec参数,用于对图像外观属性的控制,包括线条的形状,颜色和点的形状,颜色。 stem(x,y);绘制脉冲杆图图形。 Stairs(x,y);绘制阶梯图图形。
2、图像子窗口:subplot(m,n,p),将图像分为m╳n个子区域,在第p个区域中绘制图像。 3、坐标轴:axis(xmin,xmax,ymin,ymax).指定当前图像中x轴和y轴的范围。
4、图形注释:1)标题:title(‘图形名字’)。2)坐标轴名:xlabel(‘x轴的名称’),ylabel(‘y轴的名称’)。特殊符号的输入: \\alpha的输入,则自动转变成,а
实验一、几种典型离散时间序列
Matlab中处理的数组,将下标放在变量后面的小括号内,且约定从1开始递增。例如:x=[5,4,3,2,1,0],表示x(1)=5, x(2)=4, x(3)=3, x(4)=2, x(5)=1, x(6)=0。要表示一个下标不由1开始的数组x(n),一般应采用两个矢量,如:
n=[-3:5];
x=[1,-1,3,2,0,-2,-1,2,1];这表示一个含有9个点的矢量,n为一组时间矢量,对应x有:x(-3)=1, x(-2)=-1.。。。。。。
连续信号作图使用plot()函数,绘制线性图。离散信号作图使用stem()函数,绘制脉冲杆图。
一些常用的函数:
abs():求绝对值(幅值)。调用格式:y=abs(x)。 length():取某一变量的长度(采样点数)。调用格式:N=length(n),取n的点数,赋值给N。
real():取一个复数的实部,调用格式:x=real(h);取复数h的实部,赋值给变量x。 imag():取复数的虚部,调用格式:x=imag(h);取复数h的实部,赋值给变量y x=sawtooth(t);类似于sin(t),产生周期为2pi,幅值从-1到+1的锯齿波。x=sowtooth(t,width);产生三角波,其中width(0 x=square(t);产生类似于sin(t),周期为2pi,幅值我1的方波,x=square(t,duty),产生指定周期的矩形波,其中duty用于指定脉冲宽度与整个周期的比例。 rand(n,m);产生一组具有n行m列的随机信号。 1、 单位冲激序列: 1)利用零序列:x=zeros(1,N),生成一个1╳N维的零向量。 2)利用逻辑关系表达式产生单位冲激序列:x=[(n-n0)==0];只在n=n0的地方产生1. 例:MATLAB程序如下:%采样逻辑关系求脉冲序列。 n1=-5;n2=5;n0=0; n=n1:n2; x=[n==n0]; %作图部分 stem(n,x,’filled’); axis([n1,n2,0,1.1*max(x)]); title(‘单位脉冲序列’); xlabel(‘时间(n)’);ylabel(‘幅度x(n)’); %采样零序列求脉冲序列。 n1=-5;n2=5; k=0; n=n1:n2; nt=length(n); %求采样点n的个数(长度)。 nk=abs(k-n1)+1; x=zeros(1,nt); x(nk)=1; %作图同上。 2、单位阶跃序列: 1)利用1序列:x=ones(1,N),产生一个1╳N维的全1向量。 2)利用逻辑关系表达式产生单位阶跃序列:x=[(n-n0)>=0]。 Matlab程序: n=0:49; x=ones(1,50); close all; stem(n,x); title(‘单位阶跃信号序列’); 3、单位矩形序列: 1)x=ones(1,N), 2)利用逻辑关系表达式产生:x=[((n-n0>=0)&(n-nf<=0))]。 matlab程序: N=10; n=0:49; x=sign(sign(N-1-n)+1); close all; %关闭所有打开的图形窗口 stem(n,x); 注:sign(x), 符号函数,当x大于0时值为1,当x等于0时值为0,当x小于0时值为-1. 4、正弦序列: x=a*sin(omega*n+thwlta); x=a*sin(2*pi*f0/Fs*n+thelta); 例:频率为1.振幅为1的正弦信号,在窗口中显示2个周期的信号波形,并对该信号的一个周期进行32点采样。获得离散信号。做出连续信号和离散信号的图形。 MATLAB程序如下: f=1; Um-1; nt=2; %频率,振幅,周期的个数。 N=32; T=1/f; %采样点数, 周期 dt=T/N; %采样时间间隔 n=0:nt*N-1; tn=n*dt; x=Um*sin(2*f*pi*tn); %作图部分 subplot(2,1,1), plot(tn, x); axis([0, nt*T, 1.1*min(x), 1.1*max(x)]); ylabel(‘连续正弦信号x(t)’); subplot(2,1,2), stem(tn, x); axis([0, nt*T, 1.1*min(x), 1.1*max(x)]); ylabel(‘离散正弦序列x(n)’); 5、实指数序列 x(n)=a^n; 例:编写产生a=1/2和a=2的实指数连续信号和离散信号序列的程序。 MATLAB程序如下: n1=-10; n2=10; a1=1/2; a2=2; na1=-10:0; na2=0:10; x1=a1.^na1; x2=a2.^na2; %作图部分 subplot(2,2,1), plot(na1,x1); %作连续图形 title(‘实指数原信号(a<1)’); subplot(2,2,2), stem(na1,x1,’filled’); %作离散图形。 title(‘实指数序列(a<1)’); subplot(2,2,3), plot(na2,x2); %作连续图形 title(‘实指数原信号(a>1)’); subplot(2,2,4), stem(na2,x2,’filled’); %作离散图形。 title(‘实指数序列(a>1)’); 6、复指数序列: x=exp((sigma+jomega)*n); 7、矩形波序列: y=rectpuls(t,width).该函数产生一个幅度为1宽度为width,且以t=0为对称轴的矩形 脉冲信号,width的默认值为1. y=square(t,DUTY),产生一个周期为2*pi,幅值为+1(-1)的周期性方波信号。其中 DUTY表示信号的占空比。默认值为0.5. 例:矩形脉冲信号的波形图: 2 (0<=t<=1) f(t)= 0 (t<1,t>1) MATLAB程序如下: t=-0.5:0.01:3; t0=0.5;width=1; ft=2*rectpuls(t-t0,width); plot(t,ft); grid on; axis([-0.5,3,0.2,2.2]); title(‘矩形脉冲信号’); 例:产生一个频率为10HZ,占空比为30%的周期方波信号。 MATLAB程序如下: t=0:0.001:3; y=square(2*pi*10*t,30); plot(t,y); aixs(0,0.3,-1.2,1.2); title(‘周期方波信号’); 实验二、序列的基本运算 1、序列的加法和乘法 x=x1+x2; x=x1.*x2 例:已知x1(n)=u(n+2) (-4 %用0值来扩展它们的序列号,变成相同的起点和终点,原来的值不变。 n=min([n1,n2]):max([n1,n2]); N=length(n); y1=zeros(1,N); y2=zeros(1,N); y1(find((n>=min(n1))&(n<=max(n1))))=x1; y2(find((n>=min(n2))&(n<=max(n2))))=x2; x=y1+y2; subplot(3,1,1),stem(n,y1); axis([min(n),max(n),1.1*min(x),1.1*max(x)]); subplot(3,1,2),stem(n,y2); axis([min(n),max(n),1.1*min(x),1.1*max(x)]); subplot(3,1,3),stem(n, x); axis([min(n),max(n),1.1*min(x),1.1*max(x)]); 注:序列的乘法与上程序相同。 2、 序列的翻转: 翻转运算用fliplr()函数实现,设序列x(n),样值向量x和位置向量nx表示,则翻转之后的序列y(n)的样值向量y和位置向量ny表示,则 y=fliplr(x); ny=-fliplr(nx); 3、 序列的移位 设序列x(n),样值向量x和位置向量nx表示,移位n0之后的序列y(n)的样值向量y和位置向量ny表示,则 y=x; ny=nx+n0; 例:已知一正弦信号:x(n)=2sin(2pi*n/10)求其移位信号x(n-2)在-2 MATLAB程序如下: n=-2:10; n0=2; x=2*sin(2*pi*n/10); %建立原信号x(n) x1=2*sin(2*pi*(n-n0)/10); %建立x(n-2)信号 subplot(2,1,1), stem(n,x,’filled’); ylabel(‘x(n)’); subplot(2,1,2), stem(n,x1,’filled’); 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库实验部分:matlab在数字信号处理中的应用在线全文阅读。
相关推荐: