4、数组函数
下面列举一些基本函数,他们的用法和格式都相同。 sin(A),cos(A),exp(A),log(A)(相当于ln)
sqrt(A)开平方 abs(A)求模 real(A)求实部 imag(A)求虚部
式中A可以是标量也可以是矩阵 例: 利用等差向量产生一个正弦值向量 t=0:0.1:10 A=sin(t) plot(A)
这时候即可看到一个绘有正弦曲线的窗口弹出。
另:每条语句后面加“;”表示不要显示当前语句的执行结果; 不加“;”表示要显示当前语句的执行结果。
5、绘图(二维绘图)
利用前例
如果要使向量的横纵坐标一一对应,则应写为plot(t,A)。 如不要横坐标对应时,可只写plot(A)。
如果A是一个矩阵不是向量,则在同一窗口中可绘出与矩阵行数相同的曲线且颜色不同。 同时也可指定曲线的颜色和格式。 如plot(t,A,’b.’)
则原来的连续曲线就变成了蓝色的点线。 下面给出常用选项。
r红 g绿 b蓝 y 黄 m 洋红 c青 w白 k黑 ━实线 ┅┅虚线
*用星号标数据点;.用点标;o(字母“o”)用圆圈标;x(字母“x”)用叉标;-.点划线 下面给出窗口分割语句:subplot(x,y,n)表示将一个窗口分割成x行,y列 ,共x*y个窗口, 取第n个窗口为当前窗口。
例subplot(3,2,2) 分割3*2个窗口,取第二个窗口,如果下面有绘图语句,就表示要在第二个窗口中绘图。 6、联机帮助
1)help —准确指令,如 help elfun help exp help ftt
2)lookfor —有关指令,如 lookfor fourier
11
本实验可能用到的一些序列和函数
1)单位冲击序列??n?N?:
function [x,n]=impseq(n0,n1,n2) n=[n1:n2];
x=[(n-n0)==0];利用逻辑运算实现在n=N处为1。如:impseq(5,0,10) 2)单位阶跃序列u?n?N)?:
function [x,n]=stepseq(n0,n1,n2) n=[n1:n2]
x=[(n-n0)>=0]; 利用逻辑运算实现在n>=N处为1。如:stepseq(5,0,10) 3)矩形序列:
function [x,n]=stepseq(n0,n1,n2) n=[n1:n2]
x=[(n-n0)>=0] stepseq(0,0,9)实现了R10?n?
也可以用
function [x,n]=squseq(M,N,n1,n2) n=[n1:n2]
x=[(n-M)>=0&(n-N)<0] 利用逻辑运算实现在N>n>=M处为1 4) 正弦序列
x?n??sin?n*??
x(n)=sin(n*pi) x(t)=sin(2*t)
5) 也可调用库函数产生一些信号如sinc 6)直接输入序列或者函数表达式 x(t)=sin(2*t)
x(n)=[1,1,1,1,1,1]
掌握二维绘图方法 1)plot —连续曲线 t=0:pi/50pi; y=sin(t); plot(t,y,)
hold on保留前面坐标系中已经存在的图形 plot(t,y,s1,s2,s3) s1,s2,s3表示线型、颜色等 2)stem离散图形 [n,y]=squseq(4,4,0,10); stem(n,y,’o’)
3)一个窗口中绘制多个图形 subplot(2,3,1) plot(x)
subplot(2,3,2) plot(y)
12
函数调用
常用的函数:fft,abs,angle及滤波器设计中的函数见下面滤波器的设计中 数字巴特沃兹滤波器的设计方法 方法一
%获得模拟滤波器的性能指标,边界频率进行预畸变校正,按公式??Wp=0.2*pi Ws=0.3*pi;
Rp=1;%单位DB Rs=15; %单位DB Fs=0.02*pi; %单位Hz %模拟滤波器设计
[n,Wn]=buttord(Wp,Ws,Rp,Rs);%获得阶数和通带截止频率 [z,p,k]=buttap(n);%设计模拟低通滤波器原型
[b0,a0]=zp2tf(z,p,k);%转化为传递函数表示的滤波器
[b,a]=lp2lp(b0,a0,Wn);%将滤波器原形转化为要求设计的低通滤波器 %使用双线性变换法得到设计的数字滤波器 [bz,az]=bilinear(b,a,Fs);
[h,w]=freqz(bz,az);%计算频响 绘频率响应曲线 plot(h); 方法二
1、 数字滤波器的性能指标归一化 Wp=0.2 Ws=0.3
Rp=1;%单位DB Rs=15; %单位DB
2、 获得滤波器的阶数和通带截止频率 [n,Wn]=buttord(Wp,Ws,Rp,Rs) 设计巴特沃兹低通数字滤波器 [b,a]=butter(n,Wn) freqz=(b,a)
方法三见本实验附录程序
A=[0.09036,2*0.09036,0.09036]; B1=[1,-1.2686,0.7051]; B2=[1,-1.0106,0.3583]; B3=[1,-0.9044,0.2155]; [H1,w]=frez(A,B1,100); [H2,w]=frez(A,B2,100); [H3,w]=frez(A,B3,100); H=H1.*H2.*H3; mag=abs(H);
db=20log((mag+eps)/max(mag)); subplot(2,2,1) plot(w/pi,db)
13
2???tan??进行 T?2?DFT的源程序 functionX=dft(x) N=length(x); n=0:N-1; k=0:N-1;
WN=exp(-j*2*pi/N);%求得WN因子 Nk=n`*k;
WNnk=WN.^nk;%求得DFT运算矩阵,注意向量乘为点乘 X=x*WNnk;%利用矩阵运算计算DFT
14