北邮大二下 Matlab实验报告Word下载.docx

上传人:b****4 文档编号:16405173 上传时间:2022-11-23 格式:DOCX 页数:22 大小:1.05MB
下载 相关 举报
北邮大二下 Matlab实验报告Word下载.docx_第1页
第1页 / 共22页
北邮大二下 Matlab实验报告Word下载.docx_第2页
第2页 / 共22页
北邮大二下 Matlab实验报告Word下载.docx_第3页
第3页 / 共22页
北邮大二下 Matlab实验报告Word下载.docx_第4页
第4页 / 共22页
北邮大二下 Matlab实验报告Word下载.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

北邮大二下 Matlab实验报告Word下载.docx

《北邮大二下 Matlab实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《北邮大二下 Matlab实验报告Word下载.docx(22页珍藏版)》请在冰豆网上搜索。

北邮大二下 Matlab实验报告Word下载.docx

M%为N选择合适的值保证运算正确

N=M+1;

end

L=M+N-1;

%循环卷积与线性卷积结果相同时需要进行运算的最少点数

Lx=length(x);

%获得x(n)的长度

T=floor(Lx/N);

%确定分段数Tfloor向下取整函数

t=zeros(1,M-1);

%初始化序列t(n)

x=[x,zeros(1,(T+1)*N-Lx)];

%不足的分段补零

y=zeros(1,(T+1)*N);

%生成输出序列y(n),长度足够长

fori=0:

1:

T

xi=i*N+1;

x_seg=x(xi:

xi+N-1);

%选择循环卷积计算时的分段x(n)

y_seg=circonvt(x_seg,h,L);

%调用循环卷积计算线性卷积

y_seg(1:

M-1)=y_seg(1:

M-1)+t(1:

M-1);

%完成重叠相加

t(1:

M-1)=y_seg(N+1:

L);

%重新对t(n)赋值为保留的后M-1点

y(xi:

xi+N-1)=y_seg(1:

N);

%直接输出前N个点

y=y(1:

Lx+M-1);

%取出最终的输出序列

(2)function[y]=circonvt(x1,x2,N)%循环卷积实现

iflength(x1)>

N

error('

Nmustbe>

=thelengthofx1'

end

iflength(x2)>

x1=[x1zeros(1,N-length(x1))];

x2=[x2zeros(1,N-length(x2))];

m=[0:

N-1];

x2=x2(mod(-m,N)+1);

H=zeros(N,N);

forn=1:

H(n,:

)=cirshftt(x2,n-1,N);

y=x1*conj(H'

);

(3)functiony=cirshftt(x,m,N)%循环移位实现

iflength(x)>

Nmustbe>

=thelengthofx'

x=[xzeros(1,N-length(x))];

%补零函数(x(n)的长度小于N,将不够的地方全部补零)

n=[0:

n=mod(n-m,N);

y=x(n+1);

(1)function[y]=ovrlpsav(x,h,N)%实现重叠保留的主函数

Lenx=length(x);

M=length(h);

M1=M-1;

L=N-M1;

h=[hzeros(1,N-M)];

x=[zeros(1,M1),x,zeros(1,N-1)];

K=floor((Lenx+M1-1)/(L));

Y=zeros(K+1,N);

fork=0:

K

xk=x(k*L+1:

k*L+N);

Y(k+1,:

)=circonvt(xk,h,N);

Y=Y(:

M:

N)'

;

y=(Y(:

))'

(2)function[y]=circonvt(x1,x2,N)%循环卷积

x2=x2(mod(-m,N)+1);

(3)functiony=cirshftt(x,m,N)%循环移位

(4)function[XK]=dft(xn,N);

%DFT函数

k=[0:

WN=exp(-j*2*pi/N);

nk=n'

*k;

WNnk=WN.^nk;

XK=xn*WNnk;

【实验结果与分析】

x1=[1:

10]

x2=[1,0,-1]

ovrlplus(x1,x2,4)

ovrlpsav(x1,x2,4)

【运算量分析】

有限长因果序列x(n)、h(n)的长度分别为Lx和M,直接计算线性卷积y(n),y(n)可视为M个序列的叠加结果,序列长度为Lx,所以每生成一个序列需完成Lx次乘法,共需完成M*Lx次乘法运算。

这M个序列依次向右移动一位故需(Lx-1)*(M-1)次加法运算。

N越大快此算法的运算量相对来说越小,即实现重叠相加法和重叠保留法的运算量节省的越多。

◎结合教材3.5.1节作运算量分析

分段长度

序列长度

4

10

100

1000

10000

0.013151

0.000266

0.018963

0.027378

0.074834

0.001173

0.000605

0.000319

0.000917

0.010007

0.009936

0.002824

0.00092

0.000746

0.013927

0.074181

0.027121

0.006682

0.00406

0.009922

100000

0.606933

0.265476

0.052852

0.030106

0.048245

1000000

6.033528

2.483526

0.396206

0.246052

0.33387

10000000

59.93776

25.10466

3.897444

2.328122

3.231499

0.000512

0.000225

0.001249

0.000881

0.008454

0.001014

0.000514

0.000272

0.000836

0.008802

0.009297

0.002402

0.000787

0.000687

0.011107

0.05674

0.023194

0.006122

0.003941

0.011083

0.558865

0.216818

0.039175

0.026044

0.042643

5.221879

2.144089

0.357428

0.236277

0.327539

52.2464

22.02215

3.593282

2.335725

3.251762

由上表可以看出,同重叠相加法类似,随着数据规模的增大,运算耗时呈线性增长,算法的时间复杂度为O(n),其中n为数据规模。

同样由于分配的缓存空间只由分段长度确定,空间复杂度为O

(1)。

综合考察,重叠保留法也具有较好的时间和空间复杂度。

当数据量达到千万量级时,运算延时最少大约为2.335s,可运用于对信号的实时处理。

【问题与分析】

本次试验中遇到的主要问题就是不熟悉Matlab软件的使用方法和编程语言,经过认真阅读教科书和课程讲义上的Matlab介绍以及例题分析,终于完成代码编写和实验操作。

实验二周期序列的谱分析

利用DFT分析模拟信号

之频谱。

1、设定采样周期

并说明原因;

由奈奎斯特抽样定理可知,应有f0>

=2fmax,取f0=20Hz,可保证抽样后的信号不产生混叠。

f0=20Hz,

T0=0.05s,

ω=Ω×

T=16π×

0.05=0.8π.

二、若令

,确定该序列之周期

0.05=0.8π,

2π÷

ω=2.5,

N取2.5的倍数10。

3、绘制10个周期内

的取值情况;

>

99];

x=cos(0.8*pi*n);

plot(n,x)

4、令

表示

的主值序列,绘制

,解释取值情况;

9];

x1=cos(0.8*pi*n);

y=fft(x1,10);

stem(abs(y));

主值序列可以反映周期序列的全貌。

5、令

的任一周期,绘制

n=[21:

30];

x2=cos(0.8*pi*n);

y=fft(x2);

任意周期序列的频谱应该和主值序列的频谱相同。

6、令

的2个周期,绘制

,解释取值情况;

19];

y=fft(x1);

取两倍周期的DFT,结果是原点数的两倍,并在其他点补零即可。

7、(选作)若

,而M不是

周期的整数倍,绘制

,解释取值情况。

n=[14:

29];

取M=16,得

如下图,由图可见出现了失真。

实验三梳状滤波器的应用

录制一段自己的话音,时间长度及取样频率自定;

对该段声音加入一次反射、三次反射和无穷多次反射。

回声往往是原始声音衰减后的多个延迟叠加而组成的,因此回声可以用延迟单元来生成。

x(n)表示原始声音信号,α为衰减系数,T为延迟周期,回声信号

.Z变换后的系统函数H(Z)可由梳状滤波器实现。

MATLAB 

filter函数可用来仿真差分方程,本次实验用的就是这个函数。

【实验过程与结果】

在同一张图上,绘制原声音序列

、加入一次反射后的声音序列

、加入三次反射后的声音序列

和加入无穷多次反射后的声音序列

源代码:

[x,fs]=wavread(‘C:

\Users\Moon\Desktop\mine.wav’);

sound(x,fs);

a=0.6;

T=0.2;

%衰减系数与延时

y1=filter([1,zeros(1,T*fs-1),a],1,x);

%加一次反射

sound(y1,fs);

y2=filter([1,zeros(1,T*fs-1),a,zeros(1,T*fs-1),a^2],1,x);

%加两次反射

sound(y2,fs);

y3=filter([1,zeros(1,T*fs-1),a,zeros(1,T*fs-1),a^2,zeros(1,T*fs-1),a^3],1,x);

%加三次反射

sound(y3,fs);

y0=filter(1,[1,zeros(1,T*fs-1),a],x);

%加无数次反射

sound(y0,fs);

plot(y0,'

y'

)%加无数次反射波形

holdon

plot(y3,'

r'

)%加三次反射波形

plot(y2,'

b'

)%加两次反射波形

plot(y1,'

g'

)%加一次反射波形

plot(x,'

)%原音频波形

原音频波形:

加一次反射:

加两次反射:

加三次反射:

加无数次反射:

【效果分析】

结合上述各序列,分析延时、衰减系数对回声效果的影响(提示:

定量考察序列

之间的区别)。

从原始声音信号到无穷次反射信号,信号的幅值按照衰减系数的幂次在衰减,反射次数越高,衰减越厉害。

延时造成信号的水平位移,是回声产生的必要条件。

延时只要大于人的听觉

0.1s,人能明显感觉到回声。

存在一定的延时,减小衰减系数,回声的效果越好。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 自考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1