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信号