matlab实验报告

时间:2024.3.27

实验一:数字信号的 FFT 分析

1、实验内容及要求

(1) 离散信号的频谱分析:

         设信号

  此信号的0.3pi  和 0.302pi两根谱线相距很近,谱线 0.45pi 的幅度很小,请选择合适的序列长度N和窗函数,用 DFT 分析其频谱,要求得到清楚的三根谱线。

(2) DTMF 信号频谱分析

  用计算机声卡采用一段通信系统中电话双音多频(DTMF)拨号数字 0~9的数据,采用快速傅立叶变换(FFT)分析这10个号码DTMF拨号时的频谱。

2、实验目的:

通过本次实验,应该掌握:

(a) 用傅立叶变换进行信号分析时基本参数的选择。

(b) 经过离散时间傅立叶变换(DTFT)和有限长度离散傅立叶变换(DFT后信号频谱上的区别,前者 DTFT 时间域是离散信号,频率域还是连续的,而 DFT 在两个域中都是离散的。

(c) 离散傅立叶变换的基本原理、特性,以及经典的快速算法(基2时间抽选法),体会快速算法的效率。

(d) 获得一个高密度频谱和高分辨率频谱的概念和方法,建立频率分辨率和时间分辨率的概念,为将来进一步进行时频分析(例如小波)的学习和研究打下基础。

(e) 建立 DFT 从整体上可看成是由窄带相邻滤波器组成的滤波器组的概念,此概念的一个典型应用是数字音频压缩中的分析滤波器,例如 DVD AC3 和MPEG Audio

3、实验过程及结果:

1)离散信号的频谱分析:

a)代码:

N=5000;

n=[0:1:N-1];

x=0.001*cos(0.45*n*pi)+sin(0.3*n*pi)-cos(0.302*n*pi-1/4*pi);

f=abs(fft(x,N));

semilogy(n/N*2,f);

axis([0.29 0.46 0 10^5]);

b)结果:

(2) DTMF 信号频谱分析

a)代码:

x=wavread('sound.wav');

n=0:1:8799;

subplot(2,1,1);plot(n,x);

title('音频信号波形');xlabel('n');

X=fft(x,8800);magX=abs(X(1:1:8800));

w=2*pi/8800*n;

subplot(2,1,2);stem(w/pi,magX);title('音频信号的FFT');

xlabel('frequency in pi units')

axis([0,1,0,2500])

b)结果:

实验二: DTMF 信号的编码

1、实验内容及要求

1)把您的联系电话号码通过DTMF 编码生成为一个 .wav 文件。

³  技术指标:

±  根据 ITU Q.23 建议,DTMF 信号的技术指标是:传送/接收率为每秒 10 个号码,或每个号码 100ms

±  每个号码传送过程中,信号存在时间至少 45ms,且不多于 55ms100ms 的其余时间是静音。

±  在每个频率点上允许有不超过±1.5% 的频率误差。任何超过给定频率±3.5% 的信号,均被认为是无效的,拒绝接收。

(其中关键是不同频率的正弦波的产生。可以使用查表方式模拟产生两个不同频率的正弦波。正弦表的制定要保证合成信号的频率误差在±1.5%以内,同时使取样点数尽量少)

          2)对所生成的DTMF文件进行解码。

³  DTMF 信号解码可以采用 FFT 计算 N 点频率处的频谱值,然后估计出所拨号码。但 FFT计算了许多不需要的值,计算量太大,而且为保证频率分辨率,FFT的点数较大,不利于实时实现。因此,FFT 不适合于 DTMF 信号解码的应用。

³  由于只需要知道 8 个特定点的频谱值,因此采用一种称为 Goertzel 算法的 IIR 滤波器可以有效地提高计算效率。其传递函数为:

³ 

 

2、实验目的

(a)复习和巩固 IIR 数字滤波器的基本概念;

(b)掌握 IIR 数字滤波器的设计方法;

(c)掌握 IIR 数字滤波器的实现结构;

(d)能够由滤波器的实现结构分析滤波器的性能(字长效应);

(e)了解通信系统电话 DTMF 拨号的基本原理和 IIR 滤波器实现方法。

3、实验过程及结果:

a)代码:

clear

clc

d=input('请键入电话号码 ','s'); 

sum=length(d);

fs=8000;

tm=[49,50,51;52,53,54;55,56,57;0,48,0];

buf=[];

total_x=[];

sum_x=[];

sum_x=[sum_x,zeros(1,800)];

for i=1:sum                 

num=d(i)-48+1;                     

f1=[1336,1209,1336,1477,1209,1336,1477,1209,1336,1477];                  

f2=[941,697,697,697,770,770,770,852,852,852];                                        

n=1:400;

x=sin(2*pi*n*f1(num)/fs) + sin(2*pi*n*f2(num)/fs);             

x=[x,zeros(1,400)];

sum_x=sum_x+x;

total_x=[total_x,x]; 

end

wavwrite(total_x,'num_sound')

sound(total_x);  

plot(total_x);

title('电话号码时域波形')

k = [18 20 22 24 31 34 38 42];         

N=205;

for a=1:sum 

m=800*(a-1);  

X=goertzel(total_x(m+1:m+N),k+1);             

val = abs(X);

figure(2)

subplot(2,6,a);

stem(k,val,'.');

grid;xlabel('k');ylabel('|X(k)|')

set(gcf,'color','w') ;             

limit = 80;                

for c=5:8;

   if val(c) > limit, break, end      

end

for l=1:4;

   if val(l) > limit, break, end     

end

buf(a)=tm(l,c-4);

end

disp(['接收端检测到的号码'])

disp(setstr(buf))

b)结果:

     

实验三:FIR 数字滤波器的设计和实现

1、实验内容及要求:

³  录制自己的一段声音,长度为 45秒,取样频率 32kHz,然后叠加一个高斯白噪声,使得信噪比为 20dB。请采用窗口法设计一个 FIR 带通滤波器,滤除噪声提高质量。

提示:

³  滤波器指标参考:通带边缘频率为 4kHz,阻带边缘频率为4.5kHz,阻带衰减大于 50dB

³  Matlab 函数 y = awgn(x,snr,'measured') ,首先测量输入信号 x 的功率,然后对其叠加高斯白噪声;

2、实验目的

³  通过本次实验,掌握以下知识:

±  FIR 数字滤波器窗口设计法的原理和设计步骤;

±  Gibbs 效应发生的原因和影响;

±  不同类型的窗函数对滤波效果的影响,以及窗函数和长度 N 的选择。

3、实验过程及结果:

a)代码:

[x1,fs,bits]=wavread('jin.wav');

xinzaobi=20;

x2=awgn(x1,xinzaobi,'measured'); wavwrite(x2,43000,16,'jin1.wav');

t=0:1/fs:(size(x2)-1)/fs;

wp=8000*pi/43000;

ws=9000*pi/43000;

wdelta=ws-wp;

N=ceil(11*pi/wdelta);

wn=(ws+wp)/2;

b=fir1(N,wn/pi,blackman(N+1));

 figure(1)

freqz(b,1,512)

x3=filter(b,1,x2);

 figure(2)

subplot(2,1,1)

plot(t,x2)

title('滤波前时域波形');

subplot(2,1,2)

plot(t,x3);

title('滤波后时域波形');

F0=fft(x3,1024);

 f=fs*(0:511)/1024;

figure(3)

y2=fft(x2,1024);

subplot(2,1,1);

plot(f,abs(y2(1:512)));

title('滤波前频谱')

xlabel('Hz');

ylabel('幅度');

subplot(2,1,2)

F2=plot(f,abs(F0(1:512)));

 title('滤波后频谱')

xlabel('Hz');

ylabel('幅度');

wavwrite(x3,43000,16,'jin2.wav');

b)结果:

实验总结:

通过这次matlab仿真实验,了解了matlab在数字信号处理中的相关应用,可以说是让自己对matlab的功能有了进一步的认知。感觉matlab的功能确实非常强大,最直接的感受就是把加了噪声的音频信号通过滤波器后去除噪声,音频信号又“完美”地播放出来,没有噪声了。自己也对数字滤波器有了一个的认识,之前学习过模拟滤波器,也做过相关实验,感觉数字滤波器确实比较“节省成本”不需要电容、电感。还有经过DSP硬件实验,也了解了通过DSP芯片如何实现数字滤波器,觉得数字滤波器的效果还是很好的。

下面是对各个实验的小结:

实验1: 学习了傅立叶变换进行信号分析时基本参数的选择,离散傅立叶变换的基本原理、特性,以及经典的快速算法(基2时间抽选法),体会快速算法的效率。学习了采用快速傅立叶变换(FFT)分析电话多频(DTMF)拨号的相关分析方法。

实验2:学会了将电话号码通过DTMF 编码生成为一个 .wav 文件,对所生成的DTMF文件进行解码,了解通信系统电话 DTMF 拨号的基本原理和 IIR 滤波器实现方法。

实验3:了解了FIR 数字滤波器窗口设计法的原理和设计步骤;Gibbs 效应发生的原因和影响;不同类型的窗函数对滤波效果的影响,以及窗函数和长度 N 的选择。


第二篇:MATLAB实验报告(四份!!!)


MATLAB 实验报告

实验一  基本操作和简单语句输入

一 实验环境    计算机  MATLAB软件

二 实验目的    1.熟悉MATLAB的命令窗口。

               2.掌握MATLAB一些基本操作,能进行一般的数值计算。

               3.实现语句的重调和修改 。

三 预备知识    1.MATLAB的窗口组成    MATLAB主窗口中,层叠平铺了Command window(命令窗口),Launch pad(发射台),Workspace(工作空间),Command history(命令历史记录),Current directory(当前目录)等子窗口。

2.命令窗口菜单栏     单击菜单栏上的“File”选项,就会弹出下拉菜单New,Open等

四 实验内容与步骤

1.启动MATLAB

2.观察MATLAB窗口的各个组成部分

1)      了解菜单栏各菜单功能,用鼠标打开MATLAB各个菜单,在状态栏里显示当前鼠标所指的菜单项的含义。

2)      用鼠标指向常用工具栏的每个工具按钮,了解其含义。

3.命令窗口的打开和关闭。

(1)查看菜单窗口中有哪些菜单命令。

(2)在命令窗口中输入命令a=3;b=4;y=a*b+a/b,然后回车,查看命令显示结果。

(3)利用MATLAB中编辑命令行时常用的按键功能,调出一个语句,对它进行修改,并把运行结果复制到word中保存。

(4)关闭命令窗口。

(5)打开命令窗口。

4.使用MATLAB帮助

5.在命令窗中输入demo,将出现MATLAB演示窗,对MATLAB功能进行一次浏览。

五 练习

1.     调出MATLAB/stateflow的演示示例。

      This is a demonstration of some aspects of the MATLAB language.

 First,let us create a simple vector with 9 elements called a.a=[1 2 3 4 6 4 3 4 5]

So a=

1   2   3   4   6   4   3   4   5

Now let us add 2 to each element of our vector, a, and store the result in a new vector.

Notice how MATLAB requires no special handling of vector or matrix math.b=a+2

So b=

3   4   5   6   8   6   5   6   7

Creating graphs in MATLAB is as easy as one command.let us plot the result of our vector addition with grid lines.plot(b)

Grid on

2.计算,x=2,x=3时的值。

>> x=2, y=x^3+(x-0.98)^2/(x+1.25)^3-5*(x+1/x)

x =2

y =   -4.4697

>> x=3, y=x^3+(x-0.98)^2/(x+1.25)^3-5*(x+1/x)

x = 3

y =   10.386

3.计算

>> cos(60)-sqrt(9-sqrt(2))

ans =   -3.7066

4.已知: a=3,A=4,b=,B=-1,c=a+A-2B,C=a+B+2c,求: C

>> a=3,A=4,b=a^2,B=b^2-1,c=a+A-2*B,C=a+B+2*c

a =  3

A =  4

b =  9

B =  80

c =  -153

C =  -223

  实验二  矩阵和数组的操作

一 实验环境    计算机  MATLAB软件

二 实验目的    1.掌握矩阵和数组的一般操作,包括创建、保存、修改和调用等。

               2.学习矩阵和数组的加减运算与乘法。

               3.掌握对数组中元素的寻访与赋值,会对数组进行一般的操作。

三 预备知识   

常用的产生特殊矩阵的函数:  eye(n)单位阵   rand(m,n)随机矩阵   rand(m,n)正态分布随机阵

zeros(m,n)零矩阵  ones(n)全部元素都为1的矩阵  magic(n)

四 实验内容与步骤

1.     用三种方法创建一个3x3矩阵,利用矩阵编辑器将其扩充为4x5的矩阵,并保存。

1)      直接输入法  如在命令输入A=[3,2,1;4,5,6;7,8,9]。

2)      直接利用MATLAB提供的函数创建一个3x3矩阵  如在命令区输入rand(3,3)即得到一个3x3的随机矩阵。

3)      利用MATLAB提供的“Matrix Editor”完成输入。

2.     建立一个等差数列,然后由它产生一个对角阵。

>> a=linspace(0,1.5,5)

a =    0    0.3750    0.7500    1.1250    1.5000

>> B=diag(a)

B =

         0         0         0         0         0

         0    0.3750         0         0         0

         0         0    0.7500         0         0

         0         0         0    1.1250         0

             0         0         0         0    1.5000

3.     利用MATLAB的函数inv(A)求方阵A的逆矩阵。

>> A=[1,2;5,6]

A =     1     2

        5     6

>> B=inv(A)

B =     -1.5000    0.5000

            1.2500   -0.2500

五 练习

1.     创建一个5x5矩阵,提取主对角线以上的部分。

>> A=rand(5,5)

A =    0.9501    0.7621    0.6154    0.4057    0.0579

      0.2311    0.4565    0.7919    0.9355    0.3529

      0.6068    0.0185    0.9218    0.9169    0.8132

      0.4860    0.8214    0.7382    0.4103    0.0099

      0.8913    0.4447    0.1763    0.8936    0.1389

>> B=A-tril(A)

B =    0.9501    0.7621    0.6154    0.4057    0.0579

                0.4565    0.7919    0.9355    0.3529

                          0.9218    0.9169    0.8132

                                   0.4103    0.0099

                                                0.1389

2.     A=rand(3),B=magic(3),C=rand(3,4),计算AxBxC

>> A=rand(3)

A =

    0.2028    0.2722    0.7468

    0.1987    0.1988    0.4451

    0.6038    0.0153    0.9318

>> B=magic(3)

B =

     8     1     6

     3     5     7

     4     9     2

>> C=rand(3,4)

C =

    0.4660    0.5252    0.8381    0.3795

    0.4186    0.2026    0.0196    0.8318

    0.8462    0.6721    0.6813    0.5028

>> A*B*C

ans =

    9.9025    7.6305    7.8546   11.2710

    6.9648    5.4717    5.7935    7.5764

        12.5380   10.1149   11.1993   13.6187

3.创建一个3x3矩阵,并求其转置,逆矩阵。

>> A=magic(3)

A =

     8     1     6

     3     5     7

     4     9     2

>> A'

ans =

     8     3     4

     1     5     9

     6     7     2

>> inv(A)

ans =

    0.1472   -0.1444    0.0639

   -0.0611    0.0222    0.1056

   -0.0194    0.1889   -0.1028

4.用两种方法求Ax=b的解(A为四阶随机矩阵,b为四阶列向量)。

>> A=rand(4)

A =

    0.7095    0.1934    0.1509    0.8537

    0.4289    0.6822    0.6979    0.5936

    0.3046    0.3028    0.3784    0.4966

    0.1897    0.5417    0.8600    0.8998

>> b=[3;5;1;4]

b =

     3

     5

     1

     4

>> x=A\b

x =

  -33.5325

   60.6078

  -54.7098

   27.3192

>> x=linsolve(A,b)

x =

[ -25012684883469343857355768268856511193160192689537070603213733888/745923421447342920013045063411519019849591248812743641090641579]

[  45208809461043319490286549508580640316173479517271044628108279808/745923421447342920013045063411519019849591248812743641090641579]

[ -40809314514940621024347106478778749067505032416204336537704333312/745923421447342920013045063411519019849591248812743641090641579]

[    2264222330641016109064651939180364655304909872418653511505412096/82880380160815880001449451490168779983287916534749293454515731]

 >> double(x)

ans =

  -33.5325

   60.6078

  -54.7098

   27.3192

实验三    MATLAB绘图

一 实验环境  计算机  MATLAB软件

二 实验目的

1.     掌握MATLAB的基本绘命令。

2.     掌握运用MATLAB绘制一维、二维、三维的图形方法。

3.     给图形加以修饰。

三 预备知识  特殊的二维图形函数有:直方图、柄图、阶梯图、饼图、频数累计柱状图、极坐标图

四 实验内容和步骤

1.     创建一个5x5魔方矩阵,并画出这个矩阵的图形。

A=magic(5);

>> plot(A)

2.     在同一坐标轴里绘出y=sin(x),z=cos(x)两条曲线。

x=linspace(0,2*pi,50);

>> y=sin(x);

>> plot(x,y)

>> hold on

>> z=cos(x);

>> plot(x,z)

>> hold off

3.     画出y=的曲线(x(-5,5))。在这曲线上加入相同区间里的y=的曲线,并且采用绿色折线标识。

>> x=linspace(-5,5,100);

>> y=x.^2;

>> plot(x,y)

>> hold on

>> z=x.^(1/3);

>> plot(x,z,'g--')

4.     在同一窗口不同坐标系里分别绘出y1=sinx,y2=cosx,y3=cinh(x),y4=cosh(x)4个图形。

>> x=linspace(0,2*pi,30);

>> subplot(2,2,1);plot(x,sin(x));

>> subplot(2,2,2);plot(x,cos(x));

>> subplot(2,2,3);plot(x,sinh(x));

>> subplot(2,2,4);plot(x,cosh(x));

5.     绘制一个三维曲线x=cosp,y=sinp,z=p。

>> p=0:pi/10:20*pi;

>> x=cos(p);y=sin(p);z=p;

>> plot3(x,y,z)

五  练习

1.     画出横坐标在(-15,15)上的函数y=cosx的曲线。

>> x=linspace(-15,15,100);

>> y=cos(x);

>> plot(x,y)

2.     用图形表示离散函数y=并加入网格。

>> n=7:12;

>> y=1./abs(n-6);

>> plot(n,y,'p')

>> grid

3.     用图形表示连续调制波形y=sin(t)sin(9t)及其包络线。

>> t=linspace(0,4*pi,300);

>> y=sin(t).*sin(9*t);

>> y1=sin(t);y2=-sin(t);

>> plot(t,y,t,y1,'-.',t,y2,'-.')

实验四    M文件的缩写

一 实验环境  计算机  MATLAB软件

二 实验目的 

1.     学习MATLAB中的关系运算和逻辑运算,掌握它们的表达形式和用法。

2.     掌握MATLAB 中的选择结构和循环结构。

3.     学会用MATLAB进行M文件的编写和调用。

三 预备知识 

1.关系和逻辑运算  MATLAB常用的关系符有:﹤、﹥、﹤=、﹥=、==、~=。

2.选择结构  if语句和switch语句

3.循环结构  for语句一般用于循环次数已知的情况,while语句一般用于循环次数未知的情况

四 实验内容和步骤

1.     创建一个矩阵,用函数all和any作用于该矩阵,比较结果。

创建一个矩阵 a=[1,2,0,3;2,0,1,4];   

b=all(a),c=any(a),d=all(b),e=any(b)

比较结果  b=1 0 0 1   c= 1 1 1 1    d=0    e=1

2.     编写一个switch语句,判断输入数的奇偶性。

   n=input(n==);

   switch   mod(n,2);

   case  1

   A=‘奇’

   case  0

  A=‘偶’

  otherwise

  A=‘空’

  end

3.     编写一个程序画出某一分段函数所表示的曲面,并用M文件存储。

步骤1:打开MATLAB的M文件编辑器file/new/M-file,编写内容。

步骤2:选择file/save命令,将文件保存并命名。

步骤3:在command window窗口输入文件名,可看到图形。

五 练习

1.     编写一个程序计算n的阶乘。

function

N=input('N=');

 result=1;

 for i=1:N

 result=result*i;

end

result;

>> aaa

N=3

ans =

     6

2.     编写一个程序求出阶乘大于或等于的最小整数。

      function m=fei

m=1;

max=99^99

n=1;

while m<max

    m=m*n;

    n=n+1;

end

n=n-1

>>m=1

>>fei

      max=3.6973e+197

      n=120

      ans=6.6895e+198

  >>n=119;

>>jiech(119)

       m=5.5746e+196

       ans=5.5746e+196

更多相关推荐:
matlab实验报告

MATLAB教程及实训班级学号姓名实验报告实验1熟悉matlab的开发环境及矩阵操作一实验的教学目标通过本次实验使学生熟悉MATLAB70的开发环境熟悉MATLAB工作界面的多个常用窗口包括命令窗口历史命令窗口...

matlab基本操作实验报告

实验一matlab基本操作一实验目的熟悉matlab的安装与启动熟悉matlab用户界面熟悉matlab功能建模元素熟悉matlab优化建模过程二实验设备与仪器1微机2matlab仿真软件三实验步骤1了解mat...

matlab实验报告

课程设计说明书(论文)题目带限数字基带传输系统的仿真课程名称Matlab通信仿真设计专业通信工程班级1203学生姓名徐xx学号2012xxxx20329指导教师文xx设计起止时间:20xx年12月18日至20x…

matlab音乐处理合成实验报告

MATLAB高级编程与工程应用语音合成综合实验姓名班级学号日期121简单的合成音乐1请根据东方红片断的简谱和十二平均律计算出该片断中各个乐音的频率在MATLAB中生成幅度为1抽样频率为8kHz的正弦信号表示这些...

东南大学几何与代数matlab实验报告

数学实验报告学号姓名吴雪松得分实验1求解线性方程组实验内容用MATLAB求解如下线性方程组Axb其中5100A00006510000006510000006510000006510000006510000006...

matlab实验报告

数学实验报告班级学号姓名实验序号1日期年月日实验名称特殊函数与图形问题背景描述绘图是数学中的一种重要手段借助图形可以使抽象的对象得到明白直观的体现如函数的性质等同时借助直观的图形使初学者更容易接受新知识激发学习...

Matlab实验报告一

数学与信息科学系实验报告实验名称程序设计所属课程数学软件与实验实验类型综合型实验专业信息与计算科学班级20xx级1班学号姓名指导教师1234567

matlab实验报告

重庆交通大学学生实验报告实验课程名称专业综合实验开课实验室交通运输工程实验教学中心学院交通运输年级二年级专业班交通运输1班学生姓名学号63120xx20开课时间20xx至20xx学年第2学期

matlab实验报告

南京工程学院课程设计说明书论文题目课程名称院系部中心专业班级学生姓名学号设计地点指导教师设计起止时间20xx年12月8日至20xx年12月12日一课程设计目的和要求1综合运用信号与线性系统通信原理以及matla...

matlab实验报告

MATLAB实践课程设计学生姓名学号专业班级通信工程指导教师郑晓明二一二年四月二十二日目录1设计目的32题目分析33总体设计34具体设计35小结和心得106参考书目111设计目的MATLAB语言是集数值计算图形...

matlab实验报告

实验报告专业信息与计算科学班级10级1班指导老师汪太月姓名江凯学号20xx41210109实验室K7405实验名称MATLAB系统认识时间20xx年2月24日

Matlab实验报告三(画二维图形与三维曲面)

数学与信息科学系实验报告实验名称所属课程数学软件与实验实验类型综合型实验专业信息与计算科学班级学号姓名指导教师1234567

matlab实验报告(13篇)