信号与系统上机实验报告我是 buaa 快乐的小2B目录实验一、连续时间系统卷积的数值计算 (3)一、实验目的 (3)二、实验原理 (3)三、实验程序源代码、流图实验程序源代码 (4)4.1源代码与程序框图: (4)4.2数据与结果 (5)4.3数据图形 (6)实验二、信号的矩形脉冲抽样与恢复 (7)一、实验目的: (7)二、实验原理: (7)三、实验内容 (9)四、实验程序流程图和相关图像 (9)4.1、画出f(t)的频谱图即F(W)的图像 (9)4.2、对此频域信号进行傅里叶逆变换,得到相应的时域信号,画出此信号的时域波形f(t) (11)4.3、三种不同频率的抽样 (14)4.4、将恢复信号的频谱图与原信号的频谱图进行比较 (17)实验五、离散时间系统特性分析 (21)一、实验目的: (21)二、实验原理: (21)三、实验内容 (21)四、程序流程图和代码 (22)五、实验数据: (23)5.1单位样值响应 (23)5.2幅频特性 (24)六、幅频特性和相频特性曲线并对系统进行分析。
(25)6.1幅频特性曲线 (25)6.2相频特性曲线 (26)实验一、连续时间系统卷积的数值计算一、实验目的1 加深对卷积概念及原理的理解;2 掌握借助计算机计算任意信号卷积的方法。
二、实验原理1 卷积的定义卷积积分可以表示为2 卷积计算的几何算法卷积积分的计算从几何上可以分为四个步骤:翻转→平移→相乘→叠加。
3 卷积积分的应用卷积积分是信号与系统时域分析的基本手段,主要用于求系统零状态响应,它避开了经典分析方法中求解微分方程时需要求系统初始值的问题。
设一个线性零状态系统,已知系统的单位冲激响应为h(t),当系统的激励信号为e(t)时,系统的零状态响应为由于计算机技术的发展,通过编程的方法来计算卷积积分已经不再是冗繁的工作,并可以获得足够的精度。
因此,信号的时域卷积分析法在系统分析中得到了广泛的应用。
卷积积分的数值运算实际上可以用信号的分段求和来实现,即:如果我们只求当t )时r(t)的值,则由上式可以得到:1 1 2t = nΔt (n为正整数, nΔt 记为当 1 Δt 足够小时,( ) 2 r t 就是e(t)和h(t)卷积积分的数值近似,由上面的公式可以得到卷积数值计算的方法如下:1、将信号取值离散化,即以Ts 为周期,对信号取值,得到一系列宽度间隔为Ts 的矩形脉冲原信号的离散取值点,用所得离散取值点矩形脉冲来表示原来的连续时间信号;2、将进行卷积的两个信号序列之一反转,与另一信号相乘,并求积分,所得为t=0 时的卷积积分的值。
以Ts 为单位左右移动反转的信号,与另一信号相乘求积分,求的t<0 和t>0 时卷积积分的值;3、将所得卷积积分值与对应的t 标在图上,连成一条光滑的曲线,即为所求卷积积分的曲线。
三、实验程序源代码、流图实验程序源代码4.1 源代码与程序框图:#include <iostream>#include <math.h>#include <string.h>#include <fstream>using namespace std;float dt = 0.1;float bd;ofstream fout("data.out");void init(){cout<<"Hey! Enter the Left bound and Right bound you wanna scan:"<<endl;cin>>bd;}float fu(float t){if(t>=0) return 1;else return 0;}float f1(float t){return (fu(t+2) - fu(t-2));}float f2(float t){float r;r = t*(fu(t)-fu(t-2))+(4-t)*(fu(t-2)-fu(t-4));return r;}void sim(){float t1,t2,i,j,k,r1,r2,rsum;t2 = 0;while(t2<=bd+dt){//cout<<t2<<endl;system("pause");t1 = 0;rsum = 0;while(t1<=t2){r1 = f1(t1);r2 = f2(t2-t1);rsum+=(r1*r2*dt);t1 = t1 + dt;//cout<<dt<<endl;system("pause");}fout<<t2<<" "<<rsum<<endl;t2+=dt;}}int main(){init();sim();system("pause");return 0;}4.2 数据与结果t s(t) t s(t) t s(t)-2.0000 0.0000 0.7000 3.2200 3.4000 3.0900-1.9000 0.0100 0.8000 3.3400 3.5000 2.9500-1.8000 0.0300 0.9000 3.4500 3.6000 2.8000-1.7000 0.0600 1.0000 3.5500 3.7000 2.6400-1.6000 0.1000 1.1000 3.6400 3.8000 2.4700-1.5000 0.1500 1.2000 3.7200 3.9000 2.2900-1.4000 0.2100 1.3000 3.7900 4.0000 2.1000-1.3000 0.2800 1.4000 3.8500 4.1000 1.9000-1.2000 0.3600 1.5000 3.9000 4.2000 1.7100-1.1000 0.4500 1.6000 3.9400 4.3000 1.5300-1.0000 0.5500 1.7000 3.9700 4.4000 1.3600-0.9000 0.6600 1.8000 3.9900 4.5000 1.2000-0.8000 0.7800 1.9000 4.0000 4.6000 1.0500-0.7000 0.9100 2.0000 4.0000 4.7000 0.9100-0.6000 1.0500 2.1000 3.9900 4.8000 0.7800-0.5000 1.2000 2.2000 3.9700 4.9000 0.6600-0.4000 1.3600 2.3000 3.9400 5.0000 0.5500-0.3000 1.5300 2.4000 3.9000 5.1000 0.4500-0.2000 1.7100 2.5000 3.8500 5.2000 0.3600-0.1000 1.9000 2.6000 3.8500 5.3000 0.28000.0000 2.1000 2.7000 3.7900 5.4000 0.21000.1000 2.2900 2.8000 3.7200 5.5000 0.15000.2000 2.4700 2.9000 3.6400 5.6000 0.10000.3000 2.6400 3.0000 3.5500 5.7000 0.06000.4000 2.8000 3.1000 3.4500 5.8000 0.03000.5000 2.9500 3.2000 3.3400 5.9000 0.01000.6000 3.0900 3.3000 3.2200 6.0000 0.0000 4.3 数据图形将数据输出并通过管道输入给 matlab利用matlab对现有数据进行仿真绘制。
实验二、信号的矩形脉冲抽样与恢复一、实验目的:1、加深对抽样定理的原理、物理意义以及抽样过程和信号恢复的频谱变换特性的理解。
2、掌握借助计算机对信号抽样进行频域分析的方法。
二、实验原理:图4.1为连续信号 f()t 的抽样与恢复的示意图设输入信号 f()t 为带限信号(),如图4.2所示。
对 f(t) 进行矩形脉冲抽样。
假设矩形抽样脉冲 p(t)的脉冲幅度为E,脉宽为τ ,周期为Ts (抽样频率 ),则其频谱为P(w) ,即图4.3给出了抽样脉冲 p (t)的时域波形及其频谱。
对 f(t)进行矩形脉冲抽样后得到信号 fs(t) ,其对应的频谱为当 fs(t) 通过如图4.5所示的理想低通滤波器H(w)时,可从f(t)中恢复出原信号,所得恢复信号记作 f(t) 。
其中理想低通滤波器H(w) 的频谱特性为三、实验内容给定带限信号 f(t),其频谱为1 画出此信号的频谱图(ω的取值:-0.5π <ω <0.5π ,精度取0.01rad )。
2 对此频域信号进行傅里叶逆变换,得到相应的时域信号,画出此信号的时域波形 f(t)(t的取值:-20st<<20s;精度取0.1s)。
3 分别用三种不同抽样频率 f =0.2Hz,0.5 Hz,1.0 Hz的周期矩形脉冲信号(矩形脉冲的幅度E取1,宽度τ 取0.01s)对 f(t) 进行抽样,画出抽样后的信号的频谱图(ω的取值:-10rad <ω<10 rad,精度取0.01rad )。
4 针对 3 中抽样所得的矩形抽样信号,用滤波器对所得信号进行滤波,所得恢复信号 f(t)的频谱记为F ‘(w),与原信号的频谱F(w)进行比较(ω的取值:-2rad <ω<2rad ,精度取0.01rad )。
四、实验程序流程图和相关图像4.1、画出f(t)的频谱图即F(W)的图像4.1.1流程图为开始w<=1.6TF(w>=-结束1.57&&w<=1.FTf=0 f=cos(w);w=w+0.014.1.2程序代码如下:#include<iostream>#include<fstream>#include<math.h>Using namespace std;Ofstream fout (“data.out”);main(){double w,f;int I;for(i=1,w=-1.57;w<=1.57;w+=0.01,i++) {f=cos(w);fout<<w<<f>>endl;if(i%63==0) fout<<endl;}}4.1.3、F(W)的图像4.2、对此频域信号进行傅里叶逆变换,得到相应的时域信号,画出此信号的时域波形f(t)4.2.1流程图为4.2.2 程序代码与程序框图#include<iostream>#include<complex>#include<math.h>#include<fstream>using namespace std;ofstream fout("data.out");typedef complex<double> dcmplx;const double dw=0.01;const double dt=0.1;const double pi=3.1415926;double getf(double t){double w,bl,br,e,ansf;bl = -0.5*pi;br = -bl;w = bl;ansf = 0;while(w<=br){e=cos(w*t);ansf = cos(w)*e*dw+ansf;w+=dw;}/*if(imag(ansf)){cout<<"the result include imag i cannot handle that"<<endl;return 0;}return real(ansf);*/return ansf;}void sim(){double bl,br,ansf,t;bl = -20;br = 20;t=bl;while(t<=br){ansf = getf(t);ansf = ansf/pi/2;fout<<t<<' '<<ansf<<endl;t+=dt;}}int main(){sim();system("pause");return 0;}4.2.3 实验数据4.2.4 数据图形将实验数据通过管道导入matlab,分离变量,对数据进行仿真绘图。