数字信号处理MATLAB仿真
更新时间:2024-06-23 22:14:01 阅读量: 综合文库 文档下载
实验一 数字信号处理的Matlab仿真
一、实验目的
1、掌握连续信号及其MATLAB实现方法;
2、掌握离散信号及其MATLAB实现方法
3、掌握离散信号的基本运算方法,以及MATLAB实现 4、了解离散傅里叶变换的MATLAB实现 5、了解IIR数字滤波器设计 6、了解FIR数字滤波器设计1
二、实验设备
计算机,Matlab软件 三、实验内容
(一)、 连续信号及其MATLAB实现 1、 单位冲击信号
??(t)?0,????(t)dt?1,?????t?0???0
例1.1:t=1/A=50时,单位脉冲序列的MATLAB实现程序如下: clear all;
t1=-0.5:0.001:0; A=50; A1=1/A;
n1=length(t1); u1=zeros(1,n1); t2=0:0.001:A1; t0=0;
u2=A*stepfun(t2,t0); t3=A1:0.001:1; n3=length(t3); u3=zeros(1,n3); t=[t1 t2 t3]; u=[u1 u2 u3]; plot(t,u)
axis([-0.5 1 0 A+2])
2、 任意函数
f(t)??????f(?)?(t??)d?
例1.2:用MATLAB画出如下表达式的脉冲序列
f(n)?0.4?(n?2)?0.8?(n?1)?1.2?(n)?1.5?(n?1)?1.0?(n?2)?0.7?(n?3)
clear all; t=-2:1:3; N=length(t); x=zeros(1,N); x(1)=0.4; x(2)=0.8 x(3)=1.2; x(4)=1.5; x(5)=1.0; x(6)=0.7; stem(t,x);
axis([-2.2 3.2 0 1.7])
3、 单位阶跃函数
??1,u(t)????0,t?0t?0
例1.3:用MATLAB实现单位阶跃函数
clear all;
t=-0.5:0.001:1; t0=0;
u=stepfun(t,t0); plot(t,u)
axis([-0.5 1 -0.2 1.2])
4、 斜坡函数
g(t)?B(t?t0)
例1.4:用MATLAB实现g(t)=3(t-1) clear all; t=0:0.01:3; B=3; t0=1;
u=stepfun(t,t0); n=length(t); for i=1:n
u(i)=B*u(i)*(t(i)-t0); end plot(t,u)
axis([-0.2 3.1 -0.2 6.2])
5、 实指数函数
f(t)?Aeat
例1.5:用MATLAB实现f(t)?3eclear all; t=0:0.001:3; A=3; a=0.5;
u=A*exp(a*t); plot(t,u)
axis([-0.2 3.1 -0.2 14])
6、 正弦函数
0.5t
f(t)?Acos(2?t??) T0例1.6:用MATLAB实现正弦函数f(t)=3cos(10πt+1) clear all;
t=-0.5:0.001:1; A=3; f=5; fai=1;
u=A*sin(2*pi*f*t+fai); plot(t,u)
axis([-0.5 1 -3.2 3.2])
(二)、离散信号及其MATLAB实现 1、 单位冲激序列
?(n)????1,??0,n?0n?0
例2.1:用MATLAB产生64点的单位冲激序列
clear all; N=64;
x=zeros(1,N); x(1)=1; xn=0:N-1; stem(xn,x)
axis([-1 65 0 1.1])
2、 任意序列
f(n)?m?????f(m)?(n?m)
例2.2:用MATLAB画出如下表达式的脉冲序列
f(n)?8.0?(n)?3.4?(n?1)?1.8?(n)?5.6?(n?3)?2.9?(n?4)?0.7?(n?5)
clear all; N=8;
x=zeros(1,N); x(1)=8.0; x(2)=3.4 x(3)=1.8; x(4)=5.6; x(5)=2.9; x(6)=0.7; xn=0:N-1; stem(xn,x)
axis([-1 8 0 8.2])
3、 单位阶跃序列
??1,u(n)????0,n?0n?0
例2.3:用MATLAB实现单位阶跃函数
clear all; N=32;
x=ones(1,N); xn=0:N-1; stem(xn,x)
axis([-1 32 0 1.1])
4、 斜坡序列
g(n)?B(n?n0)
例2.4:用MATLAB实现g(n)=3(n-4)点数为32的斜坡序列 clear all; N=32; k=4 B=3; t0=1;
x=[zeros(1,k) ones(1,N-k)]; for i=1:N
x(i)=B*x(i)*(i-k); end
xn=0:N-1; stem(xn,x)
axis([-1 32 0 90])
5、 正弦序列
x(n)?Asin(2?fn??)
例2.5:用MATLAB实现幅度A=3,频率f=100,初始相位Φ=1.2,点数为32的正弦信号 clear all; N=32; A=3; f=100; fai=1.2; xn=0:N-1;
x=A*sin(2*pi*f*(xn/N)+fai); stem(xn,x)
axis([-1 32 -3.2 3.2])
6、 实指数序列
x(n)?Aan
例2.6:用MATLAB实现x(n)?3e,点数为32的实指数序列 clear all; N=32; A=3; a=0.7; xn=0:N-1; x=A*a.^xn; stem(xn,x)
7、 复指数序列
0.7x(n)?Ae(a?j?)n,?n
例2.7:用MATLAB实现幅度A=3,a=0.7,角频率ω=314,点数为32的实指数序列 clear all; N=32; A=3; a=0.7; w=314; xn=0:N-1;
x=A*exp((a+j*w)*xn); stem(xn,x)
8、 随机序列
利用MATLAB产生两种随机信号:
rand(1,N)在区间上产生N点均匀分布的随机序列
randn(1,N)产生均值为0,方差为1的高斯随机序列,即白噪声序列
例2.8:用MATLAB产生点数为32的均匀分布的随机序列与高斯随机序列 clear all; N=32;
x_rand=rand(1,N); x_randn=randn(1,N); xn=0:N-1; figure(1);
stem(xn,x_rand) figure(2);
stem(xn,x_randn)
(三)、离散信号的基本运算 1、 信号的延迟
给定离散信号x(n),若信号y(n)定义为:y(n)=x(n-k),那么y(n)是信号x(n)在时间轴上右移k个抽样周期得到的新序列。
例3.1:正弦序列y(n)=sin(100n)右移3个抽样周期后所得的序列,MATLAB程序如下: clear all; N=32; w=100; k=3;
x1=zeros(1,k); xn=0:N-1;
x2=sin(100*xn); figure(1) stem(xn,x2) x=[x1 x2];
axis([-1 N -1.1 1.1]) N=N+k; xn=0:N-1; figure(2) stem(xn,x)
axis([-1 N -1.1 1.1])
2、 信号相加
若信号x(n)?x1(n)?x2(n),值得注意的是当序列x1(n)和x2(n)的长度不相等或者位置不对应时,首先应该使两者的位置对齐,然后通过zeros函数左右补零使其长度相等后再相加 例3.2:用MATLAB实现两序列相加 clear all; n1=0:3
x1=[2 0.5 0.9 1]; figure(1) stem(n1,x1)
axis([-1 8 0 2.1] ) n2=0:7
x2=[ 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7]; figure(2)
stem(n2,x2)
axis([-1 8 0 0.8] ) n=0:7;
x1=[x1 zeros(1,8-length(n1))]; x2=[ zeros(1,8-length(n2)),x2]; x=x1+x2; figure(3) stem(n,x)
axis([-1 8 0 2.1])
3、 信号相乘
信号序列x1(n)和x2(n)相乘所得信号x(n)的表达式为:x(n)?x1(n)x2(n)
这是样本与样本之间的点乘运算,在MATLAB中可采用“.*”来实现,但是在信号序列相乘之前,应对其做与相加运算一样的操作。 例3.3:用MATLAB实现上例中两序列相乘 clear all; n1=0:3
x1=[2 0.5 0.9 1]; figure(1) stem(n1,x1)
axis([-1 8 0 2.1] ) n2=0:7
x2=[ 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7]; figure(2) stem(n2,x2)
axis([-1 8 0 0.8] ) n=0:7;
x1=[x1 zeros(1,8-length(n1))]; x2=[ zeros(1,8-length(n2)),x2]; x=x1.*x2; figure(3) stem(n,x)
axis([-1 8 0 0.35])
4、 信号翻转
信号翻转的表达式为:y(n)=x(-n),在MATLAB中可以用fliplr函数实现此操作 例3.4:用MATLAB实现“信号相加”中的x1(n)序列翻转 clear all; n=0:3
x1=[2 0.5 0.9 1]; x=fliplr(x1); stem(n,x)
axis([-1 4 0 2.1] )
5、 信号和
对于N点信号x(n),其和的定义为:y??x(n)
n?1N例3.5:用MATLAB实现“信号相加”中的x1(n)序列和 clear all; n=0:3
x1=[2 0.5 0.9 1]; x=sum(x1)
6、 信号积
对于N点信号x(n),其积的定义为:y??x(n)
n?1N例3.5:用MATLAB实现“信号相加”中的x1(n)序列积 clear all; n=0:3
x1=[2 0.5 0.9 1]; x=prod(x1)
(四)、离散傅里叶变换的MATLAB实现 例4:若x(n)?sin(n?)是一个N=32的有限序列,利用MATLAB计算它的DFT并画出图4形。 N=32; n=0:N-1;
xn=cos(pi*n/6); k=0:N-1;
WN=exp(-j*2*pi/N); nk=n’*k;
WNnk=WN.^nk; Xk=xn*WNnk; figure(1) stem(n,xn) figure(2)
stem(k,abs(Xk))
在MATLAB中,可以直接利用内部函数fft来实现FFT算法,该函数是机器语言,而不是MATLAB指令写成的,执行速度很快。常用格式为: y=fft(x)
y=fft(x,N)
(五)、IIR数字滤波器设计
1、 基于巴特沃斯法直接设计IIR数字滤波器
例5.1:设计一个10阶的带通巴特沃斯数字滤波器,带通频率为100Hz到200Hz,采样频率为1000Hz,绘出该滤波器的幅频于相频特性,以及其冲击响应图 clear all; N=10;
Wn=[100 200]/500;
[b,a]=butter(N,Wn,’bandpass’); freqz(b,a,128,1000) figure(2)
[y,t]=impz(b,a,101); stem(t,y)
2、 基于切比雪夫法直接设计IIR数字滤波器
例5.2:设计一个切比雪夫Ⅰ型数字低通滤波器,要求: Ws=200Hz,Wp=100Hz,Rp=3dB,Rs=30dB,Fs=1000Hz
clear all; Wp=100; Rp=3; Ws=200; Rs=30; Fs=1000;
[N,Wn]=cheb1ord(Wp/(Fs/2),Ws/(Fs/2),Rp,Rs); [b,a]=cheby1(N,Rp,Wn); freqz(b,a,512,1000);
例5.3:设计一个切比雪夫Ⅱ型数字带通滤波器,要求带通范围100-250Hz,带阻上限为300Hz,下限为50Hz,通带内纹波小于3dB,阻带纹波为30 dB,抽样频率为1000 Hz,并利用最小的阶次实现。
clear all; Wpl=100; Wph=250;
Wp=[Wpl,Wph]; Rp=3; Wsl=50; Wsh=300;
Ws=[Wsl,Wsh]; Rs=30; Fs=1000;
[N,Wn]=cheb2ord(Wp/(Fs/2),Ws/(Fs/2),Rp,Rs); [b,a]=cheby2(N,Rp,Wn); freqz(b,a,512,1000);
(六)、FIR数字滤波器设计
1、、在MATLAB 中产生窗函数十分简单: (1)矩形窗(Rectangle Window)
调用格式:w=boxcar(n),根据长度n 产生一个矩形窗w。 (2)三角窗(Triangular Window)
调用格式:w=triang(n) ,根据长度n 产生一个三角窗w。 (3)汉宁窗(Hanning Window)
调用格式:w=hanning(n) ,根据长度n 产生一个汉宁窗w。 (4)海明窗(Hamming Window)
调用格式:w=hamming(n) ,根据长度n 产生一个海明窗w。 (5)布拉克曼窗(Blackman Window)
调用格式:w=blackman(n) ,根据长度n 产生一个布拉克曼窗w。 (6)恺撒窗(Kaiser Window)
调用格式:w=kaiser(n,beta) ,根据长度n 和影响窗函数旁瓣的β参数产生一个恺撒窗w。
2、基于窗函数的FIR 滤波器设计 利用MATLAB 提供的函数firl 来实现 调用格式:firl (n,Wn,’ftype’,Window),n 为阶数、Wn 是截止频率(如果输入是形如[W1 W2] 的矢量时,本函数将设计带通滤波器,其通带为W1<ω ?1,0???0.4?Hd(e)?? 0,else?j?Window=boxcar(8); b=fir1(7,0.4,Window); freqz(b,1) 例6.2:设计线性相位带通滤波器,其长度N=15,上下边带截止频率分别为W1= 0.3π,w2=0.5 π Window=blackman(16); b=fir1(15,[0.3 0.5],Window); freqz(b,1) 例6.3:MATLAB中的chirp.mat文件中存储信号y的数据,该信号的大部分号能量集中在Fs/4(或二分之一奈奎斯特)以上,试设计一个34阶的FIR高通滤波器,滤除频率低于Fs/4的信号成分,其中滤波器的截止频率为0.48,阻带衰减为30dB,滤波器窗采用切比雪夫窗 clear all; load chirp window=chebwin(35,30); b=fir1(34,0.48,’high’,window); yfit=filter(b,1,y); [Py,fy]=pburg(y,10,512,Fs); [Pyfit,fyfit]=pburg(yfit,10,512,Fs); plot(fy,10*log10(Py),’.’,fyfit, 10*log10(Pyfit)); grid on ylabel(‘幅度(dB)’) xlabel(‘频率(Hz’) legend(‘滤波前的线性调频信号’, ‘滤波后的线性调频信号’) 实验一:MATLAB语言上机操作实践 1.简单的数组赋值方法 (1) a=[1 2 3;4 5 6;7 8 9] %给定数组a a(4,2)=11 %给数组a的第四行第二列元素赋11 a(5,:)=[-13 -14 -15] %给数组a的第五行元素赋值 a(4,3)=abs(a(5,1)) %数组a的第四行第三列元素为第五行第一列元素的模 a([2,5],:)=[] %数组a的第二行和第五行取空 a/2 %对数组a各元素对应除以2 a(4,:)=[sqrt(3) (4+5)/6*2 -7] %给数组a的第四行元素赋值 (2) B=[1+2i,3+4i;5+6i,7+8i] C=[1,3;5,7]+[2,4;6,8]*i C=[1,3;5,7]+[2,4;6,8]i D=sqrt(2+3i) %对复数2+3i求根号 D*D %对D求平方 E=C' %对C转置 F=conj(C) G=conj(C)' (3) H1=ones(3,2) H2=zeros(2,3) H3=eye(4) 2.数组的基本运算 (1) A=[1 3 5] B=[2 4 6] C=A+B D=A-2 E=B-A (2) F1=A*3 F2=A.*B F3=A./B F4=A.\\B F5=B.\\A F6=B.^A F7=2./B F8=B.\\2 (3) Z1=A*B' Z2=B'*A 3.常用函数及相应的信号波形显示 例1-1:① t=0:0.05:3; %给建立时间数组 f=2*sin(2*pi*t); %生成函数f plot(t,f); %用plot作连续信号的曲线 title('f(t)-t曲线'); %在图上端标注图名 xlabel('t'); %标注横坐标 ylabel('f(t)'); %标注纵坐标 ② t=0:0.05:3; %给建立时间数组 f=2*sin(2*pi*t); %生成函数f subplot(2,2,1),plot(t,f); %建立2*2子图轴系,在图1处绘线性图 title('plot(t,f)'); subplot(2,2,2),stem(t,f); %建立2*2子图轴系,在图2处绘脉冲图 title('stem(t,f)'); subplot(2,2,3),stairs(t,f); %建立2*2子图轴系,在图3处绘阶梯图 title('stairs(t,f)'); subplot(2,2,4),bar(t,f); %建立2*2子图轴系,在图4处绘条形图 title('bar(t,f)'); 练习题: (1) t=0:0.05:4; %给建立时间数组 f=4*exp((-2)*t); %生成函数f subplot(2,2,1),plot(t,f); %建立2*2子图轴系,在图1处绘线性图 title('plot(t,f)'); subplot(2,2,2),stem(t,f); %建立2*2子图轴系,在图2处绘脉冲图 title('stem(t,f)'); subplot(2,2,3),stairs(t,f); %建立2*2子图轴系,在图3处绘阶梯图 title('stairs(t,f)'); subplot(2,2,4),bar(t,f); %建立2*2子图轴系,在图4处绘条形图 title('bar(t,f)'); (2) t=0:0.05:3; %给建立时间数组 f=exp((-1)*t).*cos(2*pi*t); %生成函数f subplot(2,2,1),plot(t,f); %建立2*2子图轴系,在图1处绘线性图 title('plot(t,f)'); subplot(2,2,2),stem(t,f); %建立2*2子图轴系,在图2处绘脉冲图 title('stem(t,f)'); subplot(2,2,3),stairs(t,f); %建立2*2子图轴系,在图3处绘阶梯图 title('stairs(t,f)'); subplot(2,2,4),bar(t,f); %建立2*2子图轴系,在图4处绘条形图 title('bar(t,f)'); (3) k=0:0.05:10; %给建立时间数组 f=k; %生成函数f subplot(2,2,1),plot(k,f); %建立2*2子图轴系,在图1处绘线性图 title('plot(k,f)'); subplot(2,2,2),stem(k,f); %建立2*2子图轴系,在图2处绘脉冲图 title('stem(k,f)'); subplot(2,2,3),stairs(k,f); %建立2*2子图轴系,在图3处绘阶梯图 title('stairs(k,f)'); subplot(2,2,4),bar(k,f); %建立2*2子图轴系,在图4处绘条形图 title('bar(k,f)'); (4) k=-20:0.05:20; f=k.*sin(k); subplot(2,2,1),plot(k,f); %建立2*2子图轴系,在图1处绘线性图 title('plot(k,f)'); subplot(2,2,2),stem(k,f); %建立2*2子图轴系,在图2处绘脉冲图 title('stem(k,f)'); subplot(2,2,3),stairs(k,f); %建立2*2子图轴系,在图3处绘阶梯图 title('stairs(k,f)'); subplot(2,2,4),bar(k,f); %建立2*2子图轴系,在图4处绘条形图 title('bar(k,f)'); 4. 简单的流程控制编程 例1-2 X=0; %给变量X赋初值0 for n=1:32 %确定循环变量及其取值范围 X=X+n^2; %循环体 end 练习题: (1) X=0; %给变量X赋初值0 for n=1:20 %确定循环变量及其取值范围 X=X+(2*n-1)^2; %循环体 end (2) X=0; %给变量X赋初值0 for n=1:99 %确定循环变量及其取值范围 X=X+n*(n+1); end (3) a=[]; %定义数组a为空 a(1)=1; %给数组第一个元素赋值1 a(2)=1; %给数组第二个元素赋值1 for k=1:18 %确定循环变量及其取值范围 a(k+2)=a(k)+a(k+1); %循环体 end 实验二:时域离散信号的产生 (2) ① n1=-3;n2=4;n0=0; %在起点为n1、终点为n2的范围内,于n0处产生冲激 n=n1:n2; %生成离散信号的时间序列 f=[n==n0]; %建立信号f stem(n,f,'filled'); %绘制脉冲杆图,且在圆心处用实心圆表示 title('单位脉冲序列') axis([n1 n2 0 1.1*max(f)]); %限定横坐标和纵坐标的显示范围 ylabel('f(n)'); ② n1=-5;n2=5;n0=0; n=n1:n2; %生成离散信号的时间序列 f=[n>=n0]; %生成离散序列f stem(n,f,'filled'); title('单位阶跃序列') axis([n1 n2 0 1.1*max(f)]);%限定横坐标和纵坐标的显示范围 ylabel('幅度f(n)'); ③ n=0:16; f=exp((0.1+1.6*pi*j)*n); %建立信号f stem(n,f,'fill'),grid on xlabel('n'),title('f(n)'); ④ n=0:20; f=3*sin(pi/4*n); %建立信号f stem(n,f,'fill'),xlabel('n'),grid on title('f(n)') axis([0,20,-3.5,3.5]); %限定横坐标和纵坐标的显示范围 ⑤ n=-20:20; f=sinc(n/5); %建立信号f stem(n,f,'fill'),xlabel('n'),grid on title('f(n)') (3) f=50; Um=2; nt=2; %显示周期个数 N=16; %采样点数 T=1/f; %信号周期 dt=T/N; %采样时间间隔 n=0:nt*N-1; %建立离散时间的时间序列 tn=n*dt; %确定时间序列样点在时间轴上的位置 x=1+0.5*Um*sawtooth(2*f*pi*tn);%产生时域信号 subplot(2,1,1);plot(tn,x); %显示原连续信号 axis([0 nt*T 0 2]); %限定横坐标和纵坐标的显示范围 ylabel('x(t)'); subplot(2,1,2);stem(tn,x); %显示经采样的信号 axis([0 nt*T 0 2]); ylabel('x(n)'); (4) f=200; nt=2; %显示周期个数 Fs=4000;N=Fs/f; %求采样点数 T=1/f; %求信号周期 dt=T/N; %采样时间间隔 n=0:nt*N-1; %建立离散时间的时间序列 tn=n*dt; %确定时间序列样点在时间轴上的位置 x=square(2*f*pi*tn); %产生时域信号 subplot(2,1,1);plot(tn,x); %显示原连续信号 axis([0 nt*T -1 1]); %限定横坐标和纵坐标的显示范围 ylabel('x(t)'); subplot(2,1,2);stem(tn,x); %显示经采样的信号 axis([0 nt*T -1 1]); ylabel('x(n)'); 实验三:离散序列的基本运算 (2) ① n1=-5;n2=5;n0=0;n3=-3;n4=4; n=n1:n2; %生成离散信号的时间序列 f1=[n==n0]; %建立f1信号 f2=[n==n3]; %建立f2信号 f3=[n==n4]; %建立f3信号 f=f2+2*f3; %建立f信号 stem(n,f,'filled'); %画f信号的波形图 axis([n1 n2 0 1.1*max(f)]); %限定横坐标和纵坐标的显示范围 ylabel('f(n)'); ② n1=-5;n2=5;n0=0;n3=2;n4=-2; n=n1:n2; f1=[n>=n0]; %建立f1信号 f2=[n>=n3]; %建立f2信号 f3=[n>=n4]; %建立f3信号 f=f2+f3; %建立f信号 stem(n,f,'filled'); %画f信号的波形图 axis([n1 n2 0 1.1*max(f)]); %限定横坐标和纵坐标的显示范围 ylabel('f(n)'); ③ n1=0;n2=20;n3=3;n4=-3; n=n1:n2; x1=3*cos(2*pi*n/10); %建立原信号x(n) x2=3*cos(2*pi*(n-n3)/10); %建立x(n-3)信号 x3=3*cos(2*pi*(n-n4)/10); %建立x(n+3)信号 subplot(3,1,1);stem(n,x1,'filled');%画x1的波形图 ylabel('x(n)'); subplot(3,1,2);stem(n,x2,'filled');%画x(n-3)的波形图 ylabel('x(n-3)'); subplot(3,1,3);stem(n,x3,'filled');%画x(n+3)的波形图 ylabel('x(n+3)'); ④ n1=0;n2=24; n=n1:n2; x1=exp((-n)/16); %建立x1(n)信号 x2=5*sin(2*pi*n/10); %建立x2(n)信号 x=x1.*x2; %建立x1(n)*x2(n)信号 subplot(3,1,1);stem(n,x1,'filled');%画x1(n)的波形图 ylabel('x1(n)'); subplot(3,1,2);stem(n,x2,'filled');%画x2(n)的波形图 ylabel('x1(n)'); subplot(3,1,3);stem(n,x,'filled'); %画x1(n)*x2(n)的波形图 ylabel('x(n)'); (3) n1=0;n2=20; n=n1:n2; x0=n.*sin(n); %建立原信号x(n) y1=(n-3).*sin(n-3); %建立信号x(n-3) y2=(-n).*sin(-n); %建立信号x(-n) y3=-(n.*sin(n)); %建立信号-x(n) y4=(-n+3).*sin(-n+3); %建立信号x(-n+3) y5=n/2.*sin(n/2); %建立信号x(n/2) subplot(5,1,1);stem(n,y1,'filled'); ylabel('y1(n)=x(n-3)'); subplot(3,2,2);stem(n,y2,'filled'); ylabel('y2(n)=x(-n)'); subplot(3,2,3);stem(n,y3,'filled'); ylabel('y3(n)=-x(n)'); subplot(5,1,4);stem(n,y4,'filled'); ylabel('y4(n)=x(-n+3)'); subplot(3,2,5);stem(n,y5,'filled'); ylabel('y5(n)=x(n/2)'); (4) ① n1=-4:-1; x1=2*n1+5; %建立信号x1(n) n2=0:4; x2=6; %建立信号x2(n) n=min([n1,n2]):max([n1,n2]); %为x信号建立时间序列n N=length(n); %求时间序列n的点数N y1=zeros(1,N); %新建一维N列的y1全0数组 y2=zeros(1,N); %新建一维N列的y2全0数组 y1(find((n>=min(n1))&(n<=max(n1))))=x1; %为y1赋值 y2(find((n>=min(n2))&(n<=max(n2))))=x2; %为y2赋值 x=y1+y2; %建立信号x stem(n,x,'filled'); axis([min(n),max(n),1.1*min(x),1.1*max(x)]); ② n1=-4;n2=4; n3=-4;n4=-3;n5=-2;n6=-1;n7=0;n8=1;n9=2;n10=3;n11=4; n=n1:n2; x1=[n==n3]; %建立信号x1 f1=(-3)*x1; %建立信号f1 x2=[n==n4]; f2=(-1)*x2; x3=[n==n5]; f3=x3; x4=[n==n6]; f4=3*x4; x5=[n==n7]; f5=6*x5; x6=[n==n8]; f6=6*x6; x7=[n==n9]; f7=6*x7; x8=[n==n10]; f8=6*x8; x9=[n==n11]; f9=6*x9; f=f1+f2+f3+f4+f5+f6+f7+f8+f9; %建立信号f stem(n,f,'filled'); %画信号f的波形 ylabel('f(n)'); ③ n1=-4:-1; x1=2*n1+5; n2=0:4; x2=6; n=min([n1,n2]):max([n1,n2]); %为x信号建立时间序列n n3=n+2; n4=n-2; n5=2-n; N=length(n) %求时间序列n的点数N; y1=zeros(1,N); %新建一维N列的y1全0数组 y2=zeros(1,N); %新建一维N列的y2全0数组 y1(find((n>=min(n1))&(n<=max(n1))))=x1; %为y1赋值 y2(find((n>=min(n2))&(n<=max(n2))))=x2; %为y2赋值 x=y1+y2; %建立信号x y3=2*x %建立信号y3 y4=2*x; %建立信号y4 y5=x; %建立信号y5 subplot(3,1,1);stem(n3,y3,'filled');title('x1(n)'); axis([min(n3),max(n3),1.1*min(y3),1.1*max(y3)]); subplot(3,1,2);stem(n4,y4,'filled');title('x2(n)'); axis([min(n4),max(n4),1.1*min(y4),1.1*max(y4)]); subplot(3,1,3);stem(n5,y5,'filled');title('x3(n)'); axis([min(n5),max(n5),1.1*min(y5),1.1*max(y5)]); 附录一 信号、系统和系统响应 1、理想采样信号序列 (1)首先产生信号x(n),0<=n<=50 n=0:50; %定义序列的长度是50 A=444.128; %设置信号有关的参数 a=50*sqrt(2.0)*pi; T=0.001; %采样率 w0=50*sqrt(2.0)*pi; x=A*exp(-a*n*T).*sin(w0*n*T); %pi是MATLAB定义的π,信号乘可采用“.*” close all %清除已经绘制的x(n)图形 subplot(3,1,1);stem(x); %绘制x(n)的图形 title(‘理想采样信号序列’); (2)绘制信号x(n)的幅度谱和相位谱 k=-25:25; W=(pi/12.5)*k; X=x*(exp(-j*pi/12.5)).^(n’*k); magX=abs(X); %绘制x(n)的幅度谱 subplot(3,1,2);stem(magX);title(‘理想采样信号序列的幅度谱’); angX=angle(X); %绘制x(n)的相位谱 subplot(3,1,3);stem(angX) ; title (‘理想采样信号序列的相位谱’) (3)改变参数为: n=0:50; %定义序列的长度是50 A=1; %设置信号有关的参数 a=0.4; T=1; %采样率 w0=2.0734; x=A*exp(-a*n*T).*sin(w0*n*T); %pi是MATLAB定义的π,信号乘可采用“.*” close all %清除已经绘制的x(n)图形 subplot(3,1,1);stem(x); %绘制x(n)的图形 title(‘理想采样信号序列’); k=-25:25; W=(pi/12.5)*k; X=x*(exp(-j*pi/12.5)).^(n’*k); magX=abs(X); %绘制x(n)的幅度谱 subplot(3,1,2);stem(magX);title(‘理想采样信号序列的幅度谱’); angX=angle(X); %绘制x(n)的相位谱 subplot(3,1,3);stem(angX) ; title (‘理想采样信号序列的相位谱’) 2、单位脉冲序列 在MatLab中,这一函数可以用zeros函数实现: n=1:50; %定义序列的长度是50 x=zeros(1,50); %注意:MATLAB中数组下标从1开始 x(1)=1; close all; subplot(3,1,1);stem(x);title(‘单位冲击信号序列’); k=-25:25; X=x*(exp(-j*pi/12.5)).^(n’*k); magX=abs(X); %绘制x(n)的幅度谱 subplot(3,1,2);stem(magX);title(‘单位冲击信号的幅度谱’); angX=angle(X); %绘制x(n)的相位谱 subplot(3,1,3);stem(angX) ; title (‘单位冲击信号的相位谱’)
正在阅读:
数字信号处理MATLAB仿真06-23
寒潮的危害及防御措施(农业、交通、电力、航空、个人)12-06
莱钢750m3高炉冷风拨风保安系统11-19
思 考 题- 兰州理工大学研究生院 首页04-12
案例三一成功之道07-01
加拿大留学生活费用明细清单01-08
大学线性代数第五版课后习题答案06-01
二年级数学说课稿优选稿04-16
Writing a memo09-03
科普网站平台建设方案书03-04
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 信号处理
- 仿真
- 数字
- MATLAB
- 甲级单位编制电控柜电机项目可行性报告(立项可研+贷款+用地+201
- SD卡车载3G无线视频传输监控系统详细功
- 现代都市农业产业园区总体规划方案
- 企业合并练习题及答案
- 我国商业保险营销管理研究
- 第二 章 货币资金习题及答案
- 四年级下册第七单元,《图形的运动(二)》,教案
- 高中化学平衡
- 2011年最新规范-中小学校设计规范 - 图文
- 深圳证券交易所关于上市公司内部审计工作指引
- 2018-2024年基本型乘用车市场发展前景预测与投资战略规划分析报
- 陕西榆横铁路有限公司节能减排规章条例
- 卧式列管式煤油换热器课程设计说明书 - 图文
- 《中国古代文学(B)1》试题及答案
- 教师教学风格对小学生学习习惯形成的影响 - (毕业论文)- 副本
- 2017部编一年级下册《道德与法治》进度和教学设计
- 2018《专业技术人员创新能力与创新思维》考试答案
- 第一单元 古代中国经济的基本结构与特点
- 旋转测试题1
- 2012年中考物理模拟试题(九)