北京交通大学《信号与系统》专题研究性学习实验报告.docx
《北京交通大学《信号与系统》专题研究性学习实验报告.docx》由会员分享,可在线阅读,更多相关《北京交通大学《信号与系统》专题研究性学习实验报告.docx(76页珍藏版)》请在冰点文库上搜索。
北京交通大学《信号与系统》专题研究性学习实验报告
《信号与系统》课程研究性学习手册
专题一信号时域分析
1.基本信号的产生,语音的读取与播放
【研讨内容】
1)生成一个正弦信号,改变正弦信号的角频率和初始相位,观察波形变化;
2)生成一个幅度为1、基频为2Hz、占空比为50%的周期方波,
3)观察一定时期内的股票上证指数变化,生成模拟其变化的指数信号,
4)录制一段音频信号,进行音频信号的读取与播放
【题目分析】
(1)正弦信号的形式为Acos(ω0t+ψ)或Asin(ω0t+ψ),分别用MATLAB的内部函数cos和sin表示,其调用形式为
、
。
生成正弦信号为y=5sin(t),再依次改变其角频率和初相,用matlab进行仿真。
(2)幅度为1,则方波振幅为0.5,基频w0=2Hz,则周期T=pi,占空比为50%,因此正负脉冲宽度比为1。
(3)将波形相似的某一段构造成一个指数函数,在一连续时间内构造不同的2~3个不同指数函数即可大致模拟出其变化。
(4)录制后将文件格式转化为wav,再用wavread函数读取并播放,用plot函数绘制其时域波形。
【仿真】
(1)正弦信号
正弦信号1:
A=1;w0=1/4*pi;phi=pi/16;
t=-8:
0.001:
8;
xt1=A*sin(w0*t+phi);
plot(t,xt1)
title('xt1=sin(0.25*pi*t+pi/16)')
正弦信号2(改变1中频率)
A=1;w1=1/4*pi;w2=1*pi;phi=pi/16;
t=-8:
0.001:
8;
xt1=A*sin(w1*t+phi);
xt2=A*sin(w2*t+phi);
plot(t,xt1,t,xt2)
正弦信号3(改变1中相位)
A=1;w=1/4*pi;phi1=pi/16;phi2=pi/4;
t=-8:
0.001:
8;
xt1=A*sin(w*t+phi1);
xt3=A*sin(w*t+phi2)
plot(t,xt1,t,xt3)
(2)方波信号
t=-100:
0.01:
100;
T=0.5;
f=1/T;
y=square(2*pi*f*t,50);
plot(t,y);
axis([-22-33]);
(3)模拟股票上证指数变化的指数信号
x1=0:
0.001:
5;
y1=2500+1.8*exp(x1);
x2=5:
0.001:
10;
y2=2847-1.5*exp(0.8*x2);
x3=10:
0.001:
15;
y3=2734+150*exp(-0.08*x3);
x4=15:
0.001:
20;
y4=2560-156*exp(-0.08*x4);
x=[x1,x2,x3,x4];
y=[y1,y2,y3,y4];
plot(x,y);
(4)音频信号的读取与播放
[x,Fs,Bits]=wavread('C:
\Users\Ghb\Desktop\nansheng.wav')
sound(x,Fs,Bits)
plot(x)
[x,Fs,Bits]=wavread('C:
\Users\Ghb\Desktop\nvsheng.wav')
sound(x,Fs,Bits)
plot(x)
2.信号的基本运算(语音信号的翻转、展缩)
【研讨内容】
1)将原始音频信号在时域上进行延展、压缩,
2)将原始音频信号在频域上进行幅度放大与缩小,
3)将原始音频信号在时域上进行翻转,
【题目分析】
用matlab的wavread函数读取录制的音频,用length函数计算出音频文件的长度,最后计算出时间t,然后用plot函数输出录制的音频信号
(1)延展与压缩分析
把时间t变为原来的一半,信号就被延展为原来的2倍,把时间他变为原来的2倍,信号就被压缩为原来的一半。
(2)幅度放大与缩小
把信号的幅度值变为原来的2倍,信号的幅度就被放大了2倍,把信号的幅度变为原来的一半,信号就被缩小为原来的一半。
(3)信号的翻转
把信号的t变为变为原来的相反数,就可以实现信号的翻转。
【仿真】
(1)读取原始信号
fs=44100;bits=32;
[x,fs,nbits]=wavread('C:
\Users\Ghb\Desktop\nansheng.wav');
plot(x);title('原始信号')
wavplay(x,fs);
(2)信号的延展
[x,fs,nbits]=wavread('C:
\Users\Ghb\Desktop\nansheng.wav');
x1=x(1:
2:
end)
subplot(2,1,1);plot(x);title('原始信号')
subplot(2,1,2);plot(x1);title('延展')
wavplay(x1,fs);
(3)信号的压缩
[x,fs,nbits]=wavread('C:
\Users\Ghb\Desktop\nansheng.wav');
x2=x(1:
0.5:
end)
subplot(2,1,1);plot(x);title('原始信号')
subplot(2,1,2);plot(x2);title('压缩')
wavplay(x2,fs);
(4)幅度的放大
fs=44100;bits=32;
[x,fs,bits]=wavread('C:
\Users\Ghb\Desktop\nansheng.wav');
x3=2*x(1:
1:
end);wavplay(x3,fs);
subplot(2,1,1);plot(x);title('原始信号')
subplot(2,1,2);plot(x3);title('幅度变大')
(5)幅度的缩小
fs=44100;bits=32;
[x,fs,bits]=wavread('C:
\Users\Ghb\Desktop\nansheng.wav');
x4=0.5*x(1:
1:
end);wavplay(x4,fs);
subplot(2,1,1);plot(x);title('原始信号')
subplot(2,1,2);plot(x4);title('幅度变小')
(6)信号的翻转
fs=44100;bits=32;
[x,fs,bits]=wavread('C:
\Users\Ghb\Desktop\nansheng.wav');
x5=flipud(x);wavplay(x5,fs);
subplot(2,1,1);plot(x);title('原始信号')
subplot(2,1,2);plot(x5);title('信号翻转')
【结果分析】
程序1实现了语音信号的的读取,用于跟后面的变换程序进行对比;
(1)将原始音频信号在时域上进行延展、压缩;
程序2实现了语音信号的延展,通过与程序1对比可以看出,程序2在程序1的基础上横坐标变为原来的2倍,纵坐标不变,延展了2倍,程序3与程序2相反,横坐标变为原来发的的一半,压缩了2倍;
(2)将原始音频信号在时域上进行幅度放大和缩小;
程序4实现了将原来的音频信号幅度变为了原来的2倍,程序5实现了将原来的音频信号的幅度变为原来的一半,程序4和5的横坐标都不变;
(3)将原始信号在时域上进行翻转。
程序6实现了将原本来的音频信号沿x轴翻转。
由上面的图示可以看出,信号进行0.5倍压缩和2.0倍延展后,信号的波形分别变得疏散和密集,同时由存储的处理后的信号音频,可以感觉出0.5倍压缩后的信号的音色变得粗了,而2.0倍延展后的信号音频的音色变得尖了。
对0.5压缩而言,原本应该在X=2处播放的部分,被放到了X=4处播放,所以音频听起来变得音色粗了,波形变得疏散了;对2.0延展而言,原本在X=2出播放的部分在X=1处播放了,因此音频听起来音色变得尖了,波形变得密集了。
对于对信号幅度的2倍和0.5倍的改变,音频上可以听出来音量大小发生了改变。
2倍变化时,音量变大,0.5倍时音量变小。
翻转信号时,图示上可以看出图形的翻转变化。
音频上,音乐的播放发生了倒置。
3.系统响应时域求解
【研讨内容】
1)求一个RLC电路的零输入响应和零状态响应,
2)将原始音频信号中混入噪声,然后用M点滑动平均系统对受噪声干扰的信号去噪,改变M点数,比较不同点数下的去噪效果
【题目分析】
(1)RLC电路如图所示
为简单起见,取R=100ohm,L=1mH,C=100uF,U=10V,f=50Hz
(2)题目要求采用M点滑动平均系统进行去噪。
M点滑动平均系统可以看成是N=0的差分方程。
调用filter函数时,调用参数a-1=1,b为有M个元素的向量,b中每个元素的值为1/M。
即M点的滑动平均系统输入输出关系为:
,同时我们将噪声设为n,函数为n=rand(n,1);原始信号为s。
通过调整M值,观察和比较去噪效果,从而得出结论。
【仿真】
(1)L=0.001;C=0.0001;R=100;
%a=L*C=0.0000001;b=R*C=0.01;
dsolve('0.0000001*D2y+0.01*Dy+y=0','y(0)=10,Dy(0)=0','t')
ans=
exp(t*(1000*2490^(1/2)-50000))*((25*2490^(1/2))/249+5)+(2490^(1/2)*exp(-t*(1000*2490^(1/2)+50000))*(2490^(1/2)-50))/498
t=ts:
dt:
te;
Zi=exp(t*(1000*2490^(1/2)-50000))*((25*2490^(1/2))/249+5)+(2490^(1/2)*exp(-t*(1000*2490^(1/2)+50000))*(2490^(1/2)-50))/498
plot(t,Zi);title('Zi')
ts=0;te=0.1;dt=0.0001;
sys=tf([1],[0.00000010.011]);
t=ts:
dt:
te;
x=10*sin(100*pi*t);
Zs=lsim(sys,x,t);
plot(t,Zs)
(2)
R=200;d=rand(1,R)-0.5;
k=0:
R-1;
s=k.*(0.9.^k);x=s+d;
figure
(1);plot(k,d,'r-.',k,s,'b--',k,x,'g-');xlabel('k');legend('d[k]','s[k]','x[k]');title('蓝色为原始信号,红色为噪音,绿色为叠加之后的信号')
M=1;b=ones(M,1)/M;a=1;
y=filter(b,a,x);
figure
(2);plot(k,s,'b--',k,y,'r-');xlabel('k');legend('s[k]','y[k]');title('M=1(蓝色为原始信号,红色为叠加之后的信号)')
M=5;b=ones(M,1)/M;a=1;
y=filter(b,a,x);
figure(3);plot(k,s,'b--',k,y,'r-');xlabel('k');legend('s[k]','y[k]');title('M=5(蓝色为原始信号,红色为叠加之后的信号)')
M=10;b=ones(M,1)/M;a=1;
y=filter(b,a,x);
figure(4);plot(k,s,'b--',k,y,'r-');xlabel('k');legend('s[k]','y[k]');title('M=10(蓝色为原始信号,红色为叠加之后的信号)')
原始信号
M=1
M=5
M=10
【结果分析】
随着M值的增大,噪声干扰信号逐渐变得平滑,且和原信号图形比较接近,说明当M值增加到一定的值时,去噪的效果好。
同时会使原始信号失真比较大
4.连续信号卷积的近似计算
【题目分析】
两个连续信号的卷积定义为
为了进行数值计算,需对连续信号进行抽样。
记x[k]=x(kΔ),h[k]=h(kΔ),为进行数值计算的抽样间隔。
则连续信号卷积可近似的写为
(1)
这就可以利用conv函数可近似计算连续信号的卷积。
设x(t)=u(t)-u(t-1),h(t)=x(t)*x(t),
(a)为了与近似计算的结果作比较,用解析法求出y(t)=x(t)*h(t);
(b)用不同的抽样间隔进行卷积运算
【仿真】
(a)
h(t)=x(t)x(t)=u(t)*u(t)+u(t-1)*u(t-1)+2u(t)*u(t-1)=r(t)-2r(t-1)+r(t-2)
则y(t)=x(t)*h(t)=
即
(b)
当T=0.1时
T=0.1;
k=-1:
T:
4;
f1=1*((k>=0)&(k<=1));
f2=tripuls(k-1,2);
y=conv(f1,f2)*T;
tmin=-2;tmax=8;
t1=tmin:
T:
tmax;
plot(t1,y);title('T=0.1')
当T=0.01时
T=0.01;
k=-1:
T:
4;
f1=1*((k>=0)&(k<=1));
f2=tripuls(k-1,2);
y=conv(f1,f2)*T;
tmin=-2;tmax=8;
t2=tmin:
T:
tmax;
plot(t2,y);title('T=0.01')
当T=0.001时
T=0.001;
k=-1:
T:
4;
f1=1*((k>=0)&(k<=1));
f2=tripuls(k-1,2);
y=conv(f1,f2)*T;
tmin=-2;tmax=8;
t3=tmin:
T:
tmax;
plot(t3,y);title('T=0.001')
专题二信号频域分析
1.分析男女生信号的频谱
【研讨内容】
(1)采集wav格式的男女生语音信号。
(2)对所采集的语音信号进行频谱分析
【仿真】
[x,Fs1,Bits]=wavread('C:
\Users\Ghb\Desktop\nansheng.wav')
X=length(x);
T=10;
k1=T/(X-1);
k2=0:
X-1;
k=0:
k1:
T;
subplot(2,2,1);
plot(k,x)
title('男声,times')
Fx=fft(x,X);
omega1=2*pi/X*k2;
subplot(2,2,2);
plot(omega,abs(Fx));
title('男声,omega')
wavplay(x,Fs1)
[y,Fs2,Bits]=wavread('C:
\Users\Ghb\Desktop\nvsheng.wav')
Y=length(y);
T=10;
t1=T/(Y-1);
t2=0:
Y-1;
t=0:
t1:
T;
subplot(2,2,3);
plot(t,y)
title('女声,times')
Fy=fft(y,Y);
omega2=2*pi/Y*t2;
subplot(2,2,4);
plot(omega2,abs(Fy));
title('女声,omega')
wavplay(y,Fs2)
2.信号的抽样
【题目分析】
频率为f0Hz的正弦信号可表示为
按抽样频率fsam=1/T对x(t)抽样可得离散正弦序列x[k]
在下面的实验中,取抽样频率fsam=8kHz。
(1)对频率为2kHz,2.2kHz,2.4kHz和2.6kHz正弦信号抽样1秒钟,利用MATLAB函数sound(x,fsam)播放这四个不同频率的正弦信号。
(2)对频率为5.4kHz,5.6kHz,5.8kHz和6.0kHz正弦信号抽样1秒钟,利用MATLAB函数sound(x,fsam)播放这四个不同频率的正弦信号。
(3)比较
(1)和
(2)的实验结果,解释所出现的现象。
【仿真】
F0=2000Hz
k=0:
1:
8000;
f0=2000;
fs=8000;
x=sin(2*pi*f0/fs*k);
sound(x,fs);
subplot(2,1,1)
stem(k,x);title('f0=2000Hz,离散图')
axis([020-11])
subplot(2,1,2)
plot(k,x);title('f0=2000Hz,连续图')
axis([020-11])
F0=2200Hz
k=0:
1:
8000;
f0=2200;
fs=8000;
x=sin(2*pi*f0/fs*k);
sound(x,fs);
subplot(2,1,1)
stem(k,x);title('f0=2200Hz,离散图')
axis([020-11])
subplot(2,1,2)
plot(k,x);title('f0=2200Hz,连续图')
axis([020-11])
F0=2400Hz
k=0:
1:
8000;
f0=2400;
fs=8000;
x=sin(2*pi*f0/fs*k);
sound(x,fs);
subplot(2,1,1)
stem(k,x);title('f0=2400Hz,离散图')
axis([020-11])
subplot(2,1,2)
plot(k,x);title('f0=2400Hz,连续图')
axis([020-11])
F0=2600Hz
k=0:
1:
8000;
f0=2600;
fs=8000;
x=sin(2*pi*f0/fs*k);
sound(x,fs);
subplot(2,1,1)
stem(k,x);title('f0=2600Hz,离散图')
axis([020-11])
subplot(2,1,2)
plot(k,x);title('f0=2600Hz,连续图')
axis([020-11])
F0=5400Hz
k=0:
1:
8000;
f0=5400;
fs=8000;
x=sin(2*pi*f0/fs*k);
sound(x,fs);
subplot(2,1,1)
stem(k,x);title('f0=5400Hz,离散图')
axis([020-11])
subplot(2,1,2)
plot(k,x);title('f0=5400Hz,连续图')
axis([020-11])
F0=5600Hz
k=0:
1:
8000;
f0=5600;
fs=8000;
x=sin(2*pi*f0/fs*k);
sound(x,fs);
subplot(2,1,1)
stem(k,x);title('f0=5600Hz,离散图')
axis([020-11])
subplot(2,1,2)
plot(k,x);title('f0=5600Hz,连续图')
axis([020-11])
F0=5800Hz
k=0:
1:
8000;
f0=5800;
fs=8000;
x=sin(2*pi*f0/fs*k);
sound(x,fs);
subplot(2,1,1)
stem(k,x);title('f0=5800Hz,离散图')
axis([020-11])
subplot(2,1,2)
plot(k,x);title('f0=5800Hz,连续图')
axis([020-11])
F0=6000Hz
k=0:
1:
8000;
f0=6000;
fs=8000;
x=sin(2*pi*f0/fs*k);
sound(x,fs);
subplot(2,1,1)
stem(k,x);title('f0=6000Hz,离散图')
axis([020-11])
subplot(212)
plot(k,x);title('f0=6000Hz,连续图')
axis([020-11])
F0=7200Hz
k=0:
1:
8000;
f0=7200;
fs=8000;
x=sin(2*pi*f0/fs*k);
sound(x,fs);
subplot(2,1,1)
stem(k,x);title('f0=7200Hz,离散图')
axis([020-11])
subplot(212)
plot(k,x);title('f0=7200Hz,连续图')
axis([020-11])
F0=7400Hz
k=0:
1:
8000;
f0=7400;
fs=8000;
x=sin(2*pi*f0/fs*k);
sound(x,fs);
subplot(2,1,1)
stem(k,x);title('f0=7400Hz,离散图')
axis([020-11])
subplot(212)
plot(k,x);title('f0=7400Hz,连续图')
axis([020-11])
F0=7600Hz
k=0:
1:
8000;
f0=7600;
fs=8000;
x=sin(2*pi*f0/fs*k);
sound(x,fs);
subplot(2,1,1)
stem(k,x);title('f0=7600Hz,离散图')
axis([020-11])
subplot(212)
plot(k,x);title('f0=7600Hz,连续图')
axis([020-11])
F0=7800Hz
k=0:
1:
8000;
f0=7800;
fs=8000;
x=sin(2*pi*f0/fs*k);
sound(x,fs);
subplot(2,1,1)
stem(k,x);title('f0=7800Hz,离散图')
axis([020-11])
subplot(212)
plot(k,x);title('f0=7800Hz,连续图')
axis([020-11])
【结果分析】
(1)高频抽样的信号图像较低频抽样的信号图像更吻合原信号图像。
(2)当频率大于2000Hz时,频率越高正弦信号的声音频率越高,声音尖、高;当F0大于7000Hz时,信号频率越高正弦信号的声音频率越低,声音混、厚。
(3)当频率为7800Hz时,听不到声音
3.连续时间信号Fourier变换的数值近似运算
【题目分析】
计算连续信号频谱是对信号和系统进行频域分析的基础,由于实际信号大多无简单的解析表达式,所以要用数值方法进行近似计算。
本题要求对频谱近似计算中误差的原因进行初步的分析,希望能在计算实际信号频谱的近似计算中起一定的指导作用。
若信号x(t)的非零值在
区间,则可用下面提供的函数ctft1或ctft2近似计算其频谱。
函数ctft的调用形式为
[X,f]=ctft1(x,fsam,N)
[X,f]=ctft2(x,fsam,N)
其中调用变量x存放信号x(t)的抽样值,fsam表示对连续信号x(t)的