信号与系统实验报告 哈工大威海 - 图文

更新时间:2024-04-16 21:39:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验一 Matlab时域信号计算

一、基本练习

信号的产生是所有仿真的第一步,只有正确的产生所需要的信号,才能保证系统仿真与分析正确的进行。下面给出几个基本信号的产生方法。

t=0:0.01:1; %设1s时间长度,时间间隔(步长)为0.01s,t为向量 x1=0.1*exp(-2*t); %单边指数信号

x2=2*cos(2*pi*4*t); %余弦信号,其中频率为4Hz

x3=[ones(1,10) zeros(1,90) ones(1,10) zeros(1,90)]; %脉冲信号,占空比10% x4=3*exp(-30*(t-0.5).*(t-0.5)); %高斯信号 x5=3*sinc(10*(t-0.5)); %抽样信号

subplot(511); plot(x1); title('指数信号'); %plot(t,x1) 横轴表示时间,即0~1s subplot(512); plot(x2); title('余弦信号'); subplot(513); stem (x3); title('脉冲信号'); subplot(514); plot(x4); title('高斯信号'); subplot(515); plot(x5); title('抽样信号');

%脉冲信号有多种表示方法,用figure可以打开新的画图空间

[x3,t] = gensig('pulse',5,30,0.2);stem(t,u);%还可以将pulse改成sin、square

x3=sawtooth(2*pi*5*[0:0.001:1]);%锯齿波[0:0.001:1]表1s时间长度,时间间隔为0.001s plot(x3) %用plot(x)画出的是连续曲线,若将plot(x)换成stem(x),画出的是离散值,如脉冲信号画的就是离散值。循环方法

for k=2:0.5:8 % 2为初值,0.5为步长,8为终值 xxxxx %循环体 End 二、实验内容(报告打印,图需

N要缩小,不许超过2页) 21nπf(t)??sin()cos(n?t)11.利用,写出用余弦合成方波πn2n?1的程序,画出N=5,7,11,21的波

形。注意选择合适的时间长度,一个。(1)通过波形分析:不同N结果有何不同?(2)若波形与下图相同,需要每个周期至少画几个点?

N=5 N=11

N=7 N=21

2.画出余弦信号x2=2*cos(2*pi*f*t),选择频率f为10Hz,t为0~0.5s。适当选择时间间隔(步长),使得每周期分别有12、8、4、2+2/3、2、1点,并用plot(t,x,'o-')画出六种情况的波形(参见下图)。分析六种情况所得结果的差异,你认为一个周期采几个点才能充分表现正弦波。

每周期采样8点 每周期采样4点 每周期采样2+2/3点 每周期采样2点

x(t)?[1?mcos(?t)]cos(t)3.画出单边带调制波形,频率0?任选(看清波形为宜),分析

m=0.5, 0.8, 1.0时调幅波的差异。

实验一 实验报告

1.余弦合成方波 程序清单:N=[5 7 11 21]; for m=1:4 w=2*pi*10; b=0.1/4./N; t=0:b(m):0.4; x1=0;

%给出N的值

%循环调用不同N值 循环图像输出 plot(x1)

title(['N=',num2str(N(m)),'点数为' ,num2str(0.1/b(m))]) %数字转换为字符输出 end

%步长受N值影响

for n=1:N(m) %循环实现求和公式 x1=2/pi/n*sin(n*pi/2)*cos(n*w*t)+x1; end subplot(4,1,m) %实现

(1)不同N结果有何不同?

图像可得,当N增大时,信号的近似程度提高,合成信号的边沿加入了丰富的高频分量,因此更加陡峭,顶部起伏增多,但总体趋势趋于平缓,也就是更接近方波信号。 (2)若波形正确,需要每个周期至少画几个点?

4个。为了能看到每个小波形的波峰及波谷,则每个周期至少需要采2个点,但是此时的波形在信号的边沿处看不到明显的上升沿;当取3个点时,余弦信号的波形会很乱,而且上升沿效果也不明显,因此每个周期至少画4个点。

2.画出余弦信号 程序清单:

N=[12 8 4 2+2/3 2 1]; %给出不同的N值 b=0.1./N; for m=1:6

%循环输出不同N信号

f=10;

t=0:b(m):0.5;

x2=2*cos(2*pi*f*t);

subplot(3,2,m); plot(t,x2,'o-');

title(['N=' rat(N(m))]); End

%转换为假分数

分析六种情况所得结果的差异,你认为一个周期采几个点才能充分表现正弦波?

12个以上。当每个周期取1个点时,显示信号曲线为一条直线;当每个周期取2个或者4个点时,信号曲线相同,为规则锯齿波;当每个周期取2+2/3个点时,信号波形为周期性不规则变化的曲线;当每个周期取8个点时,信号波形才能从锯齿波转向正弦波,但效果也不明显;因此只有当每个周期取12个点或者更多点时才能充分表现正弦波。

3.不同m的调幅波 程序清单:

m=[0.5 0.8 1.0]; %给出不同的m值 w=2*pi*10; %调制信号频率10Hz w0=2*pi*500; %载波频率500Hz for n=1:3 %循环产生、输出调幅波 t=0:0.003:0.5;

x3=[1+m(n)*cos(w*t)].*cos(w0*t);

subplot(3,1,n) plot(x3)

title(['m=',num2str(m(n))]) end

分析m=0.5, 0.8, 1.0时调幅波的差异。

取ω0=50Ω,即高频载波低频调制信号。当m值增大时,调制信号的振幅变大,因此调幅波的幅度值也随之增大;而且由图像可得,当m=1时,调制信号与载波振幅相等,调幅波周期出现孤立。

实验二 信号的频谱分析

实验目的:(1)掌握计算信号的幅度谱的方法 (2)理解频率分辨率

(3)通过解题,培养解决实际问题的能力 一、基本练习

对实验一产生的信号做傅里叶变换,得到对应的频谱密度,画出时域波形和幅度谱。 1、产生时域信号 Dt=0.01

t=0:Dt:1-Dt; %设1s时间长度,步长Dt=0.01s,t为100个元素的向量 x1=0.1*exp(-2*t); %单边指数信号,100个点

x2=2*cos(2*pi*10*t); %频率为10Hz的余弦信号,100个点 x3=[ones(1,10) zeros(1,90) ]; %脉冲信号,100个点 x4=3*exp(-30*(t-0.5).*(t-0.5)); %高斯信号,100个点 x5=3*sinc(10*(t-0.5)); %抽样信号,100个点 %画时域波形

subplot(5,2,1); plot(t,x1); title('指数信号'); subplot(5,2,3); plot(t,x2); title('余弦信号'); subplot(5,2,5); plot(t,x3); title('脉冲信号'); subplot(5,2,7); plot(t,x4); title('高斯信号'); subplot(5,2,9); plot(t,x5); title('抽样信号'); 2、由傅里叶变换得到频谱密度

N=1000; %设频谱长度1000点,

f=(-N/2:N/2-1)/N*(1/Dt); %步长1/N*(1/Dt)=0.1Hz,f为1000个元素的向量,即计算-50~49.9Hz的频谱

X1=fftshift(fft(x1,N)); %这是计算傅里叶变换的方法,将来在数字信号处理中会学到,X1是复函数,可分别求幅度谱和相位谱

AMP1=abs(X1); %单边指数信号的幅度谱(求模运算),以下类推 X2=fftshift(fft(x2,N)); AMP2=abs(X2); X3=fftshift(fft(x3,N)); AMP3=abs(X3); X4=fftshift(fft(x4,N)); AMP4=abs(X4); X5=fftshift(fft(x5,N)); AMP5=abs(X5);

%画幅度谱

subplot(5,2,2); plot(f,AMP1); title('指数信号频谱'); subplot(5,2,4); plot(f,AMP2); title('余弦信号频谱'); subplot(5,2,6); plot(f,AMP3); title('脉冲信号频谱'); subplot(5,2,8); plot(f,AMP4); title('高斯信号频谱'); subplot(5,2,10); plot(f,AMP5); title('抽样信号频谱');

1?x(t)??0?二、实验内容

0?t??1、求脉冲信号的频谱密度。给定矩形

脉冲信号。T为信号的时间长度,??t?TT=1s,两个点之间为Dt=0.01s。 (1)改变脉冲宽度,画出四种情况的幅

度谱,分析第一零点(主瓣宽度)、旁瓣高度、旁瓣个数怎样改变?

(2)分别画出两个和四个矩形脉冲的幅度谱,从理论上分析它们与单个矩形脉冲的幅度谱有什么区别?

???0.1s,0.2s,0.5s,1s

f(t)2、信号包含两个不同频率的正弦波,若把截断

T?1为有限长信号

f(t)?[cos(t)?cos(t)][u(t)?u(t?T)]T12(1) 当f1=10Hz,

f2=10.5Hz,时间长度s时,画出fT(t)的幅度谱,在频谱上能否将两个不同频率的正弦波信号分开? (2) 增加时间长度T=2s,画出fT(t)的幅度谱。

(3) T为何值时才能分辨出两个正弦波信号?画出此时fT(t)的幅度谱。

(4)讨论当有n个不同频率正弦波相加时,如何能在频域看到n个正弦波的频谱。

3、一个线性非时变连续时间系统,其系统函数H(ω)如图(a)所示。已知系统能把图(b)所示的锯齿波信号变为图(c)所示的方波信号,即激励锯齿波信号的响应为方波信号。画出激励、系统、响应的时e(t) 域和频域图形。 H(ω) 2 a -4 -2 O 2 6 4 t (b) r(t) -π O -2π π 2π ω b 1 -4 (a) -2 O -1 (c) 2 4 6 t ??

3'、已知激励信号e(t)为周期锯齿波,如图(a)所示。经RC低通网络传输,如图(b)所示。画出激励、系统、响应的时域和频域图形。 e(t) -T t O T 2T (a)

+ + R r(t) e(t) C -

(b)

-

实验二 实验报告

1.脉冲信号的频谱密度

程序清单:(1)不同占空比τ的单矩形脉冲信号t0=[0.1 0.2 0.5 1]; Dt=0.01; t=0:Dt:1-Dt; N=1000; f=(-N/2:N/2-1)/N*(1/Dt); for m=1:4 %循环产生、输出信号

x1=[ones(1,t0(m)/Dt),zeros(1,(1-t0(m))/Dt) ]; X1=fftshift(fft(x1,N)); AMP1=abs(X1); subplot(4,1,m); plot(f,AMP1);

axis([-20 20 -inf inf]);

%傅里叶变换 %求模

for m=1:2; %循环产生、输出信号

t=0:Dt:n(m)-Dt; x2=[];

for k=1:n(m)

x2=[x2,ones(1,t0/Dt),zeros(1,(1-t0)/Dt)]; end %实现多矩形脉冲产生 X2=fftshift(fft(x2,N)); AMP2=abs(X2); subplot(2,1,m); plot(f,AMP2); axis([-20 20 -inf inf]);

title(['τ=',num2str(t0),'的',num2str(n(m)),'个矩形脉冲信号频谱']); end

title(['τ=' num2str(t0(m)),'单脉冲频谱图']); end

(2)τ=0.2时多个矩形脉冲信号 t0=0.2; Dt=0.01; n=[2 4]; %2个或4个 N=1000; f=(-N/2:N/2-1)/N*(1/Dt);

(1) 第一零点(主瓣宽度)、

旁瓣高度、旁瓣个数怎样改变? 随τ值增大,主瓣宽度(第一零点)与τ呈反比减小,高度正比增大;随之,旁瓣高度相应增大,波形加密,旁瓣个数正比例增多。

(2) 分析多个脉冲与单个矩形脉冲的幅度谱有什么区别?

当矩形脉冲个数增多时,主瓣高度随之相应升高。单矩形脉冲信号频谱图中,每瓣只有一个峰值,而在多个矩形脉冲信号频谱图中,每瓣有多个峰值,且其包络线组成各瓣。随矩形脉冲个数增多,主瓣保持9个峰值,但峰值间隔更明显,峰值波形更尖锐。

2.信号的频率分辨率 程序清单:T=[1 2 1.5];

for m=1:3 %循环产生、输出信号 Dt=0.01; t=0:Dt:T(m)-Dt; f1=10; f2=10.5;

x=cos(2*pi*f1*t)+cos(2*pi*f2*t);

N=1000; f=(-N/2:N/2-1)/N*(1/Dt);

X=fftshift(fft(x,N));

AMP=abs(X); subplot(3,1,m); plot(f,AMP); axis([-20 20 0 inf]);

title(['T=' num2str(T(m))]); end

讨论:

如图,当T=1s时,显然不能将频率分别为f1=10Hz和f2=10.5Hz的信号分开。当T=2s时,两信号显然可以分开,但是波谷值与波峰值差距较大。因此在1s-2s之间设置一系列值进行实验,当T=1.5s时,恰好波谷值是波峰值的0.707倍,此时两信号恰好分开,其幅度谱如图所示。

当有n个不同频率正弦波相加时,如果频率相差较大,则很明显能在频谱图中看到n个正弦波的频谱;但如果各正弦波的频率相差较小,则必须增大T才能更好的看到n个正弦波的频谱。例如,增加f3=11Hz,则在T=2s时才能分开三个正弦波信号。

3.激励、系统、响应的时域和频域图形 程序清单:Dt=0.01; t=-100:Dt:100-Dt; N=1000; f=(-N/2:N/2-1)/N*(1/Dt); x1=2-mod(t,2); X1=fftshift(fft(x1,N));

x3=(-1).^(floor(t/1));

X3=fftshift(fft(x3,N));

t0=(-N/2:N/2-1)*Dt; X2=X3./X1; AMP2=abs(X2); x2=ifft(X2,N);

AMP3=abs(X3); %画图横坐标t0 %H(w)=R(w)/E(w) %傅里叶反变换

%激励锯齿波 AMP1=abs(X1); %响应方波

实验三 信号的频谱分析II

实验目的:

1、理解频谱分析时N的选取,熟练掌握横轴(时间与频率)坐标的对应关系。 2、学会计算实际信号的幅度谱,并分析简单的特性。

3、学会解决实际问题的方法,如特殊点(时域、频域)的处理。 4、正确理解时域与频域的对偶关系(如压缩与扩展)。

一、基本练习

1、对余弦信号做傅里叶变换,改变频率,考察幅度谱。

M=100; Dt=1/M;

t=0:Dt:1-Dt; %设1s时间长度,步长Dt=0.01s,t为M个元素的向量 x1=2*cos(2*pi*2*t); %频率为2Hz的余弦信号,M个点 x2=2*cos(2*pi*5*t); %频率为5Hz的余弦信号,M个点 x3=2*cos(2*pi*10*t); %频率为10Hz的余弦信号,M个点 x4=2*cos(2*pi*2.5*t); %频率为2.5Hz的余弦信号,M个点 x5=2*cos(2*pi*4.5*t); %频率为4.5Hz的余弦信号,M个点 subplot(5,2,1); plot(t,x1); title('频率2Hz'); subplot(5,2,3); plot(t,x2); title('频率5Hz'); subplot(5,2,5); plot(t,x3); title('频率10Hz'); subplot(5,2,7); plot(t,x4); title('频率2.5Hz'); subplot(5,2,9); plot(t,x5); title('频率4.5Hz'); N=100; %设频谱长度1000点, f=(-N/2:N/2-1)/N*(1/Dt); %步长1/N*(1/Dt)=0.1Hz X1=fftshift(fft(x1,N)); AMP1=abs(X1); X2=fftshift(fft(x2,N)); AMP2=abs(X2); X3=fftshift(fft(x3,N)); AMP3=abs(X3); X4=fftshift(fft(x4,N)); AMP4=abs(X4); X5=fftshift(fft(x5,N)); AMP5=abs(X5);

subplot(5,2,2); stem(f,AMP1); title('频率2Hz'); axis([-50 50 0 100 ]); subplot(5,2,4); stem(f,AMP2); title('频率5Hz'); axis([-50 50 0 100 ]); subplot(5,2,6); stem(f,AMP3); title('频率10Hz'); axis([-50 50 0 100 ]); subplot(5,2,8); stem(f,AMP4); title('频率2.5Hz'); axis([-50 50 0 100 ]); subplot(5,2,10); stem(f,AMP5); title('频率4.5Hz'); axis([-50 50 0 100 ]);

将上面的程序运行后,发现频率2.5Hz和频率4.5Hz的频谱与其他相差很大。将stem改成plot,再将N改为1000,此时各余弦信号除频率不同外,频谱基本相似。因此在频谱分析时,如果允许,最好在频域的点数多一些,其中的道理随着后续课程会逐步理解。 2、频率轴的问题

前面程序中,f=(-N/2:N/2-1)/N*(1/Dt),其中: (1)如果每两个点之间的频率差为1/N,(-N/2:N/2-1)/N是指横轴的频率范围是-0.5~0.5(一般范围的上限要减去一个间隔,即小学学过的植树问题)。这是归一化的频率。

(2)如果需要使频率范围在-0.5 fs~0.5 fs之间,则f=(-N/2:N/2-1)/N*fs。 (3)fs实际是时域波形两点间的间隔Dt之倒数,及fs=1/Dt。fs称为采样频率,Dt称为采样间隔。

3、幅度谱的归一化,AMP 0= AMP /max(AMP),归一化后方便计算带宽。 4、音频信号的读写和播放

[x b]=wavread('music1.wav'); %读音频信号文件,x信号为,b为采样频率,b=11025。 wavplay(x ,b); %播放音频信号

wavwrite(x,b,'ss.wav'); %写音频信号文件

x1=resample(x,a1,a2) ;%时域压缩或扩展,a1,a2为正整数,a1>a2 音调变低,a1

二、实验内容

1、对所给音频信号,进行时域压缩和扩展,画出时域波形与幅度谱,使其满足以下要求。

(1)将music1.wav的音调变低a倍(0.8

(2)将music2.wav的音调变化到与儿童和男声相似的声音,分析变换前后的10%带宽的变化情况(变宽或变窄多少)。

提示:为了便于比较,至少要以压缩、扩展二者中最长的信号长度做为fft(x,N)中的N值。

2、f(t)={sin[2*π*(t-2)]}/[π*(t-2)],若时间向量为t=a:Dt:b; 频率向量为f=(-N/2:N/2-1)/N*(1/Dt);选择合适的a,b,Dt,N,并说明理由。注意sinx/x在x=0时无意义,应该补充该值。

三、实验报告要求

1、报告包括:程序的核心部分,使用压缩或扩展,分析带宽的变化。 2、报告为5号字,按模板写。

实验三 实验报告

1.音频信号压缩和扩展程序清单: a=[0.9 1.0 1.2]; %可以修改 a1=30; b=11025;

[x0 b]=wavread('music1.wav'); for m=1:3; %循环处理 a2=a1*a(m);

x=resample(x0,a1,a2); wavplay(x,b);

t=0:1/b:(length(x)-1)/b;

subplot(3,3,3*m-2); plot(t,x); axis([0 6 -inf inf])

title(['a=' num2str(a(m)) '的时域图']); N=(length(resample(x0,a1,a1*max(a)))); f=(-N/2:N/2-1)/N*b; X=fftshift(fft(x,N));

AMP=abs(X); AMP0=AMP/max(AMP); subplot(3,3,3*m-1); plot(f,AMP0); title(['a=' num2str(a(m)) '的频域图']); subplot(3,3,3*m); plot(f,AMP0); axis([-inf inf 0 0.1]) %限定10%带宽 title(['a=' num2str(a(m)) '的10%带宽图']); end

a=[1 0.7 1.4]; %分别修改变声 str=['原' '男' '童']; %供标题调用 a1=30; b=11025;

[x0 b]=wavread('music2.wav'); for m=1:3; %循环处理 a2=a1*a(m);

x=resample(x0,a1,a2); wavplay(x,b);

t=0:1/b:(length(x)-1)/b;

subplot(3,3,3*m-2); plot(t,x); axis([0 3 -inf inf])

title([str(m) '声的时域图']);

N=(length(resample(x0,a1,a1*max(a)))); f=(-N/2:N/2-1)/N*b; X=fftshift(fft(x,N));

AMP=abs(X); AMP0=AMP/max(AMP); subplot(3,3,3*m-1); plot(f,AMP0); title([str(m) '声的频域图']);

subplot(3,3,3*m); plot(f,AMP0); axis([-inf inf 0 0.1]) %限定10%带宽 title([str(m) '声的10%带宽图']); end

(1) 扩展0.9倍,变换前后的10%带宽由2284.54Hz变为2056.16Hz。变化率:变窄9.997%。

压缩1.2倍,变换前后的10%带宽由2284.54Hz变为2944.61Hz。变化率:变宽28.893%。 (2) 男声:扩展0.7倍,变换前后的10%带宽由2394.9Hz变为1685.7Hz。变化率:变窄29.61 %。

童声:压缩1.4倍,变换前后的10%带宽由2394.9Hz变为3353.1Hz。变化率:变宽40.01%。 2.抽样信号f(t)={sin[2*π*(t-2)]}/[π*(t-2)] 程序清单:

a=-50; b=50; M=100; N=3400; Dt=3/M; t=a:Dt:b; %跳过t=2点 f=(-N/2:N/2-1)/N*(1/Dt); x=sin(2*pi*(t-2))./(pi*(t-2)); subplot(211); plot(t,x); axis([-1 5 -1.5 2.5]);

title('抽样信号的时域图'); X=fftshift(fft(x,N));

AMP=abs(X);AMP0=AMP/max(AMP); subplot(212); plot(f,AMP0); axis([-5 5 -0.1 1.1]); title('抽样信号的频域图');

(1)如何选择合适的a,b,Dt,N,选择理由。

为了显示合理(关于t=2对称)的时域图,a,b应该选择合适的值,即可以适当调大一些。 Dt为采样间隔,即多长时间采一个点,程序中Dt=3/M,是为了取点过程中跳过t=2点,即M=3fs。当Dt过大时,信号取点过少,低于分辨点数,时域图失真,因此Dt应该适量小些。

N取值与a,b,Dt都有关系,为了使傅里叶变换后的谱线不被截断,N应该与信号x的长度相当,而x的长度由a,b,Dt决定,即length(x)=(a-b)/Dt,因此当a,b调大、Dt取小些时,N应该取得足够大的值才能使的频谱图不失真。 (2)本课程实验体会

对于本课程实验的体会要远比程序清单长得长,但限于篇幅,简单说。通过实验,熟练掌握了MATLAB对信号处理的基本操作,能够对信号进行简单的傅里叶变换等处理;同时,使得抽象的信号具体化,加深了我们对课本知识的认识与理解;另外,锻炼了我们面对问题、处理难题的心态,对今后的学习工作大有裨益!

(1)如何选择合适的a,b,Dt,N,选择理由。

为了显示合理(关于t=2对称)的时域图,a,b应该选择合适的值,即可以适当调大一些。 Dt为采样间隔,即多长时间采一个点,程序中Dt=3/M,是为了取点过程中跳过t=2点,即M=3fs。当Dt过大时,信号取点过少,低于分辨点数,时域图失真,因此Dt应该适量小些。

N取值与a,b,Dt都有关系,为了使傅里叶变换后的谱线不被截断,N应该与信号x的长度相当,而x的长度由a,b,Dt决定,即length(x)=(a-b)/Dt,因此当a,b调大、Dt取小些时,N应该取得足够大的值才能使的频谱图不失真。 (2)本课程实验体会

对于本课程实验的体会要远比程序清单长得长,但限于篇幅,简单说。通过实验,熟练掌握了MATLAB对信号处理的基本操作,能够对信号进行简单的傅里叶变换等处理;同时,使得抽象的信号具体化,加深了我们对课本知识的认识与理解;另外,锻炼了我们面对问题、处理难题的心态,对今后的学习工作大有裨益!

本文来源:https://www.bwwdw.com/article/ukmp.html

Top