当前位置:文档之家› 实现正弦信号的采样与重构课程设计报告

实现正弦信号的采样与重构课程设计报告

东华理工大雪软件学院课程设计报告
课程设计题目:实现正弦信号的采样与重构
学生姓名:陈俊
学号:08113203
专业:信息工程
班级:081132
指导教师:李金萍
2011 年 1 月 6日
目录
实验目的 (2)
实验原理 (2)
MATLAB简介 (3)
实验步骤 (5)
程序代码 (6)
实验效果图 (9)
心得体会 (10)
参考文献 (10)
附录 (11)
一、试验目的
1、了解信号的采样方法与过程以及信号恢复的方法。

2、通过实验前对MATLAB软件的学习,更好的掌握MATLAB
软件的使用
3、验证采样定理。

二、试验原理
1、离散时间信号可以从离散信号源获得,也可以从连续时间信号采样而得。

采样信号x s(t)可以看成连续信号x (t)和一组开关函数s(t)的乘积。

s(t)是一组周期性窄脉冲,如图2-5-1,T s称为采样周期,其倒数f s=1/T s 称采样频率。

图2-5-1 矩形采样信号
对采样信号进行傅里叶分析可知,采样信号的频率包括了原连续信号以及无限个经过平移的原信号频率。

平移的频率等于采样频率f s及其谐波频率2f s、3f s……。

当采样信号是周期性窄脉冲时,平移后的频率幅度按sinx/x规律衰减。

采样信号的频谱是原信号频谱周期的延拓,它占有的频带要比原信号频谱宽得多。

2、采样信号在一定条件下可以恢复到原信号。

只要用一截止频率等于原信号频谱中最高频率f n的低通滤波器,滤除高频分量,经滤波后得到的信号包含了原信号频谱的全部内容,故在低通滤波器输出端可以得到恢复后的原信号。

三、MATLAB简介
软件的功能特点:
在科学研究和工程应用中,往往要进行大量的数学计算,其中包括矩阵运算。

这些运算一般来说难以用手工精确和快捷地进行,而要借助计算机编制相应的程序做近似计算。

Matlab就解决这些问题。

Matlab语言有如下特点:
1.编程效率高
它是一种面向科学与工程计算的高级语言,允许用数学形式的语言编写程序,且比Basic、Fortran和C等语言更加接近我们书写计算公式的思维方式,用Matlab编写程序犹如在演算纸上排列出公式与求解问题。

因此,Matlab语言也可通俗地称为演算纸式科学算法语言由于它编写简单,所以编程效率高,易学易懂。

2.用户使用方便
Matlab语言是一种解释执行的语言,它灵活、方便,其调试程序手段丰富,调试速度快,需要学习时间少。

人们用任何一种语言编写程序和调试程序一般都要经过四个步骤:编辑、编译、连接以及执行和调试。

各个步骤之间是顺序关系,编程的过程就是在它们之间作瀑布型的循环。

具体地说,Matlab运行时,如直接在命令行输入Mailab语句(命令),包括调用M文件的语句,每输入一条语句,就立即对其进行处理,完成绩译、连接和运行的全过程。

又如,将Matlab源程序编辑为M文件,由于Mat1ab 磁盘文件也是M文件,所以编辑后的源文件就可直接运行,而不需进行编译和连接。

在运行M文件时,如果有错,计算机屏幕上会给出详细的出锗信息,用户经修改后再执行,直到正确为止。

所以可以说,Mat1ab语言不仅是一种语言,广义上讲是一种该语言开发系统,即语言调试系统。

3.扩充能力强
高版本的Matlab语言有丰富的库函数,在进行复杂的数学运算时可以直接调用,而且Matlab的库函数同用户文件在形成上一样,所以用户文件也可作为Matlab的库函数来调用。

因而,用户可以根据自己的需要方便地
建立和扩充新的库函数,以便提高Matlab使用效率和扩充它的功能。

MATLAB是矩阵实验室(Matrix Laboratory)之意。

除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。

MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用
C,FORTRAN等语言完相同的事情简捷得多.在新的版本中也加入了对C,FORTRAN,C++ ,JAVA的支持.可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用,非常的方便。

MATLAB的基础是矩阵计算,但是由于他的开放性,并且mathwork也吸收了像maple等软件的优点,使MATLAB成为一个强大的数学软件
四、实验步骤
1、用函数模拟生成正玄信号
此实验使用的是s=s+sin(f(i)*2*pi*(1:N)/f0)函数作为
原始正玄信号
2、设定采样点数等,对正玄信号进行采样
实验的采样点数是由数字信号的采样频率与信号采样频率
的比值得出
3、恢复出方波信号
4、低通滤波恢复出原始信号
期间还要注意一个相位的问题
5对实验结果及函数进行分析,得出结论
五、程序代码:
文件名 main.m
clear;
clc;
f0=10000; %用来模拟模拟信号的数字信号的采样频率fs<<f0
f=[10 50 100];%f是模拟信号的频率表 max(f)<250;
fs=500; %信号的采样频率
N=500;%数字信号的样点数
%模拟信号的生成
s=signal_generate(f,f0,N);
subplot(4,1,1); %波形的输出,做一列输出四个波形
plot(s);
axis([1 N min(s) max(s)]);%axis([xmin xmax ymin ymax]) 分别表示x轴和y轴的坐标的刻度
%采样点数,间隔的计算
deltaN=f0/fs
Ns=N/deltaN
%采样
for i=1:Ns
sd(i)=s((i-1)*deltaN+1);
end
subplot(4,1,2);
stem(sd,'.');% 表示画X与Y的火柴杆的图形
axis([1 Ns min(s) max(s)]);
%恢复出方波信号
sp=[];
for i=1:Ns
sp=[sp sd(i)*ones(1,deltaN)];% ones生成一个单位矩阵end
subplot(4,1,3);plot(sp);axis([1 N min(s) max(s)]); %低通滤波恢复出原始信号
Wm=fs/f0
level=5/Wm
b=low_filter(Wm,level);
delay=level/2;
sp=[sp zeros(1,delay)];
so=filter(b,1,sp);
so=so(delay+1:delay+N)/deltaN;
subplot(4,1,4);plot(so);axis([1 N min(s) max(s)]); 文件1 结束
文件2:文件名 signal_generate.m
function s=signal_generate(f,f0,N)
f0=10000;
num=length(f);
s=zeros(1,N);
for i=1:num
s=s+sin(f(i)*2*pi*(1:N)/f0);
end
文件2 结束
文件3:文件名 low_filter.m
function b=low_filter(Wm,level);
Nm=ceil(Wm/2*level);% ceil(x) : 大于x 的最小整数
H=zeros(1,level);% zero是生成一个零矩阵,用来给变量申请内存,使运算速度快一些
H(1:Nm)=ones(1,Nm);
H(Nm+1)=0.5;
H(level-Nm+1)=-0.5;
H(level-Nm+2:level)=-ones(1,Nm-1);
theta=-(level-1)/level*pi*(0:level-1); %phase(相位)
Hg=H.*exp(j*theta);
b=real(ifft(Hg));% ifft函数是快速傅里叶逆变换,real 函数表示取实数部分
b=b/(sum(b.^2));
六、实验效果图:
图解:
上图中共有四个波形,其中第一个为原始信号波形,第二个为抽样信号波形,其三为恢复出来的方波信号波形,第四个则是恢复出来的原始波形
七、心得体会
通过几天的课程设计,我们通过对模拟出来的正弦信号的抽样,再进行恢复,先恢复出方波信号,之后再恢复出原始信号波形,充分的了解信号的采样方法与过程以及信号恢复的方法,同时也理解了采样定理。

正是如此,使得我们对本学期学的信号系统专业课程有了更清晰的了解及掌握。

不但如此,课程设计前对MATLAB的学习也让我们更好的掌握了一个很好用的软件,很实用的软件。

八、参考文献
《信号与系统实验》(PDF文件)
《信号与系统》(第二版)
《信号与系统(第二版)习题全解与实验指导》
《信号与系统——MATLAB综合实验》
《基于MATLAB7.x的系统分析与设计》
九、附录
东华理工大学软件学院
课程设计评分表
学生姓名:陈俊班级:081132 学号:08113203
课程设计题目:实现正弦信号的采样与重构。

相关主题