北京理工大学信号与系统实验报告
- 格式:doc
- 大小:813.50 KB
- 文档页数:106
高级数字信号处理实验报告实验名称:基于小波变换的信号去噪实验实验时间:2013/5/17姓名:学号:班级:05111003原信号SNR = 9SNR = 25SNR = 49实验二 基于小波变换的信号去噪实验实验内容:利用函数wnoise ,产生2 种不加噪声的信号,分别是 'blocks' 和'doppler' ,观察这 两个信号的特点,对每一个信号,进行如下处理:一、产生信号的长度为512点,给信号加上不同信噪比的噪声,即把wnoise 中的SQRT_SNR 参数值分别设为3、5和7,观察在不同信噪比情况下,有噪信号的特点。
1.实验结果2.分析:单独地,对于blocks 信号而言,信噪比很低时“平台”部分受到噪声的污染很严重,原本十分平坦的部分变得起伏很明显;对doppler 信号的波形而言,高的信噪比尤其能使信号的高频部分可分辨程度提高。
总而言之,从blocks 和doppler 函数的原信号与三种信噪比信号对比图中看出,信噪比越高,含噪信号的波形就与原波形越接近,换句话说噪声对于信号的影响就越小。
二、当SQRT_SNR 参数值设为5 时,对加噪后的信号进行3 级的小波分解,对小原信号SNR = 9SNR = 25SNR = 49波系数进行硬阈值和软阈值处理,比较软硬阈值处理的结果。
1.实验结果表格 1 blocks 信号硬阈值和软阈值处理的比较注:标准差从MATLAB 中figure 界面数据分析工具中直接读取;标准误差为编程计算所得 (后同)。
1020signal of snr=25signal of hard-threshold-5051015signal of soft-thresholdsignal of snr=25-505signal of hard-threshold50100150200250300350400450500-505signal of soft-threshold表格 2 doppler信号硬阈值与软阈值处理的比较2.分析首先明确硬阈值处理与软阈值处理各自的特点。
通信电路与系统实验1-1. 简单基带传输系统分析(1)实验目的掌握观察系统时域波形,特别是眼图的操作方法。
(2)实验内容构造一个简单示意性基带传输系统。
以双极性PN码(伪噪声Pseudo-Noise: PN)发生器模拟一个数据信源,码速率为100bit/s,低通型信道噪声为加性高斯噪声(标准差=0.3v)。
要求:(3)系统参数(4)系统框图(5)实验结果nk 10 (dB m 50 o2-1. 二进制键控系统分析11)相干接收2ASK系统分析(1)实验目的由于本实验是利用SystemView进行仿真分析的第一个上机实验,故安排了较为简单的2ASK和2FSK系统分析内容,上机操作步骤介绍得也很详细。
建议除按照实验的分析内容要求得到分析结果外,应进一步熟悉软件的主要操作步骤。
(2)实验内容(3)系统参数Token0: 双极性二进制基带码源(PN码),参数:Amp=1v;Offset=0v;Rate=100Hz;No.of Level=2;Token1: 乘法器;Token2: 正弦载波信号源,参数:Amp=1V;F=1000Hz;Phase=0;Token3: 加法器;Token4: 高斯噪声源,参数:Std Deviation=0.5V;Mean=0V;Token5: 乘法器;Token6: 正弦本地同步载波信号源,参数设置同Token2;Token7: 模拟低通滤波器,参数:Butterworth_Lowpass IIR;No.of Poles=5;LoCuttoff=300Hz;Token8,9,10:信宿接收分析器(Sink8,Sink9,Sink10)。
(4)系统框图(5)实验结果2)2FSK系统分析(1)实验内容(2)系统参数Token0:PN码源,参数:Amp=1v、Offset=0v、Rate=1200Hz、No.of levels=2;Token1:直接调频器,参数:Amp=1v、F=1700Hz、Phase=0、Mod Gain=400Hz/V;Token2,3,4:话带加性高斯噪声模拟信道,参数:Token4为Butterworth_BPF、No.of Poles=5、Lo Cuttoff=300Hz、Hi Cuttoff=3400Hz;Token3为高斯噪声源;Token5,6,7:锁相环路,其中Token6为Butterworth_LPF、No.of Poles=1、Lo Cuttoff =1200Hz;Token7:VCO,参数:Amp=2v、F=1700Hz、Phase=0、Mod Gain=800Hz/v;Token8:低通滤波器,参数:Butterworth_BPF、No.of Poles=7、Lo Cuttoff=2400Hz;Token9:过零比较器,参数:选a>b模式、a输入为Token8输出、b输入为门限电平、True Output=1v、false Output=-1v ;Token10:比较门限电平,选正弦信号源,Amp=0V、F=0Hz,即比较门限为0电平;Token11,12,13,14,15,16:信宿接收分析器Sink。
信号与系统实验报告
实验名称:信号与系统实验
一、实验目的:
1.了解信号与系统的基本概念
2.掌握信号的时域和频域表示方法
3.熟悉常见信号的特性及其对系统的影响
二、实验内容:
1.利用函数发生器产生不同频率的正弦信号,并通过示波器观察其时域和频域表示。
2.通过软件工具绘制不同信号的时域和频域图像。
3.利用滤波器对正弦信号进行滤波操作,并通过示波器观察滤波前后信号的变化。
三、实验结果分析:
1.通过实验仪器观察正弦信号的时域表示,可以看出信号的振幅、频率和相位信息。
2.通过实验仪器观察正弦信号的频域表示,可以看出信号的频率成分和幅度。
3.利用软件工具绘制信号的时域和频域图像,可以更直观地分析信号的特性。
4.经过滤波器处理的信号,可以通过示波器观察到滤波前后的信号波形和频谱的差异。
四、实验总结:
通过本次实验,我对信号与系统的概念有了更深入的理解,掌
握了信号的时域和频域表示方法。
通过观察实验仪器和绘制图像,我能够分析信号的特性及其对系统的影响。
此外,通过滤波器的处理,我也了解了滤波对信号的影响。
通过实验,我对信号与系统的理论知识有了更加直观的了解和应用。
信号与系统实验报告实验一连续时间信号1.1表示信号的基本MATLAB函数1.2连续时间负指数信号1、对下面信号创建符号表达式x(t)=sin(2πt/T)cos(2πt/T)。
对于T=6,8和16,利用ezplot 画出0<=t<=32内的信号。
什么是x(t)的基波周期?x1=sym('sin(2*pi*t/T)');x2=sym('cos(2*pi*t/T)');x=x1*x2x4=subs(x,4,'T');ezplot(x4,[0,32]);x8=subs(x,8,'T');ezplot(x8,[0,32]);x16=subs(x,16,'T');ezplot(x16,[0,32]);T=4 T=8T=162、对下面信号创建一个符号表达式x(t)=exp(-at)cos(2πt)。
对于a=1/2,1/4,1/8,利用ezplot确定td,td为|x(t)|最后跨过0.1的时间,将td定义为该信号消失的时间。
利用ezplot对每一个a值确定在该信号消失之前,有多少个完整的余弦周期出现,周期数目是否正比于品质因素Q=(2π/T)/2a?x1=sym('exp(-a*t)');x2=sym('cos(2*pi*t)');x=x1*x2;xa1=subs(x,1/2,'a');ezplot(xa1);xa2=subs(x,1/4,'a');ezplot(xa2);xa3=subs(x,1/8,'a');ezplot(xa3);a=1/2 a=1/4a=1/83、将信号x(t)=exp(j2πt/16)+exp(j2πt/8)的符号表达式存入x中。
函数ezplot不能直接画出x(t),因为x*(t)是一个复数信号,实部和虚部分量必须要提取出来,然后分别画出他们。
实验1利用DFT分析信号频谱一、实验目的1.加深对DFT原理的理解。
2.应用DFT分析信号的频谱。
3.深刻理解利用DFT分析信号频谱的原理,分析实现过程中出现的现象与解决方法。
二、实验设备与环境计算机、MATLAB软件环境。
三、实验原理1. DFT与 DTFT的关系有限长序列的离散时间傅里叶变换在频率区间的N个等间隔分布的点上的N个取样值可以由下式表示:由上式可知,序列x(n)的N 点DFT X(k),实际上就是x(n)序列的DTFT在N 个等间隔频率点上样本X(k)。
2. 利用DFT 求DTFT法一:由X (k)恢复出的方法:法二:然而在实际 MATLAB计算中,上述插值运算不见得是最好的办法。
由于DFT是 DTFT 的取样值,其相邻两个频率样本点的间距为2/N,所以如果我们增加数据的长度N,使得到的DFT谱线就更加精细,其包络就越接近DTFT的结果,这样就可以利用DFT来近似计算DTFT。
如果没有更多的数据,可以通过补零来增加数据长度。
3.利用DFT分析连续时间信号的频谱采用计算机分析连续时间信号的频谱,第一步就是把连续时间信号离散化,这里需要进行两个操作:一是采样,二是截断。
将利用DFT分析连续非周期信号频谱的步骤归纳如下:(1)确定时域采样间隔T,得到离散序列x(n);(2)确定截取长度M,得到M点离散序列,这里为窗函数。
(3)确定频域采样点数N,要求。
(4)利用FFT计算离散序列的N点DFT,得到。
(5)根据式(2-6)由计算采样点的近似值。
采用上述方法计算的频谱,需要注意如下三个问题:(1)频谱混叠。
如果不满足采样定理的条件,频谱会出现混叠误差。
对于频谱无限宽的信号,应考虑覆盖大部分主要频率分量的围。
(2)栅栏效应和频谱分辨率。
使用DFT计算频谱,得到的结果只是N个频谱本值,样本值之间的频谱是未知的,像通过一个栅栏观察频谱,称为“栅栏效应”。
频谱分辨率与记录长度成反比,要提高频谱分表率,就要增加记录时间。
数字信号处理实验报告1.深入掌握应用DFT分析信号的频谱的理论方法,针对该问题进行一次全面综合练习,完成一个完整的信号分析软件实现方法和流程,这种全面完整的综合练习可以帮助学生深入理解和消化基本理论,锻炼学生独立解决问题的能力,培养学生的创新意识,为今后的科研和工作打下良好的实践基础。
2.综合利用数字信号处理的理论知识完成数字滤波器的设计与实现,完成一个完整的数字滤波器设计软件的实现方法和流程。
这种全面完整的综合练习可以帮助学生深入理解和消化基本理论,锻炼学生独立解决问题的能力,培养学生的创新意识,为今后的科研和工作打下良好的实践基础。
二、实验设备与环境计算机、MATLAB软件环境三、实验内容1.基于Matlab GUI的离散傅里叶变换分析2.基于Matlab GUI的数字滤波器分析设计1.基于Matlab GUI的离散傅里叶变换分析信号: t=1:100;x=2*sin(t/25*2*pi)+5*sin(t/5*2*pi);说明:输入信号从Matlab Command Windows中生成,通过变量名导入本软件,并可输出DFT变换后的结果,默认名为DFT_输入变量名。
2.基于Matlab GUI的数字滤波器分析设计IIR 低通:(巴特沃兹)IIR高通:(切比雪夫I)IIR带通:(切比雪夫II)IIR带阻:(椭圆滤波器)FIR低通:(矩形窗)FIR高通:(汉宁窗)FIR带通:(布莱克曼窗)FIR带阻:(凯瑟窗)五、程序界面设计及程序源代码1.基于Matlab GUI的离散傅里叶变换分析界面设计:程序代码:function varargout =SignalDFTSoftware(varargin)% SIGNALDFTSOFTWARE MATLAB code for SignalDFTSoftware.fig% SIGNALDFTSOFTWARE, by itself, creates a new SIGNALDFTSOFTWARE or raises the existing% singleton*.%% H = SIGNALDFTSOFTWARE returns the handle to a new SIGNALDFTSOFTWARE or the handle to% the existing singleton*.%%SIGNALDFTSOFTWARE('CALLBACK',hObject,even tData,handles,...) calls the local% function named CALLBACK in SIGNALDFTSOFTWARE.M with the given input arguments.%%SIGNALDFTSOFTWARE('Property','Value',...) creates a new SIGNALDFTSOFTWARE or raises the% existing singleton*. Starting from the left, property value pairs are% applied to the GUI before SignalDFTSoftware_OpeningFcn gets called.An% unrecognized property name or invalid value makes property application% stop. All inputs are passed to SignalDFTSoftware_OpeningFcn via varargin. %% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one% instance to run (singleton)".%% See also: GUIDE, GUIDATA, GUIHANDLES% Edit the above text to modify the response to help SignalDFTSoftware% Last Modified by GUIDE v2.5 26-Nov-2011 12:55:11% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name',mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn',@SignalDFTSoftware_OpeningFcn, ...'gui_OutputFcn',@SignalDFTSoftware_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);if nargin&&ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1}); endif nargout[varargout{1:nargout}] =gui_mainfcn(gui_State, varargin{:});elsegui_mainfcn(gui_State, varargin{:});end% End initialization code - DO NOT EDIT% --- Executes just before SignalDFTSoftware is made visible.function SignalDFTSoftware_OpeningFcn(hObjec t, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% varargin command line arguments to SignalDFTSoftware (see VARARGIN)% Choose default command line output for SignalDFTSoftwarehandles.output = hObject;% Update handles structure guidata(hObject, handles);% UIWAIT makes SignalDFTSoftware wait for user response (see UIRESUME)% uiwait(handles.figure1);% --- Outputs from this function are returned to the command line.function varargout =SignalDFTSoftware_OutputFcn(hObject, eventdata, handles)% varargout cell array for returning output args (see VARARGOUT);% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% Get default command line output from handles structurevarargout{1} = handles.output;% --- If Enable == 'on', executes on mouse press in 5 pixel border.% --- Otherwise, executes on mouse press in 5 pixel border or over random.function random_ButtonDownFcn(hObject, eventdata, handles)% hObject handle to random (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% --- Executes on button press in random. function random_Callback(hObject, eventdata, handles)% hObject handle to random (see GCBO)% eventdata reserved - to be defined in a future version of MATLABglobal x;global x_flag;x=rand(1,50)*20-10;x_flag=1;if(x_flag)plot(handles.TD,0:(length(x)-1),x);end% --- Executes on button press in Delete.function Delete_Callback(hObject, eventdata, handles)% hObject handle to Delete (see GCBO)% eventdata reserved - to be defined in a future version of MATLABglobal x;global X;global x_flag;global X_flag;x=0;X=0;x_flag=0;X_flag=0;plot(handles.TD,0,0);plot(handles.FD,0,0);% --- If Enable == 'on', executes on mouse press in 5 pixel border.% --- Otherwise, executes on mouse press in 5 pixel border or over Delete.function Delete_ButtonDownFcn(hObject, eventdata, handles)% hObject handle to Delete (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% --- If Enable == 'on', executes on mouse press in 5 pixel border.% --- Otherwise, executes on mouse press in 5 pixel border or over Analyse.function Analyse_ButtonDownFcn(hObject, eventdata, handles)% hObject handle to Analyse (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% --- Executes on button press in Analyse. function Analyse_Callback(hObject, eventdata, handles)% hObject handle to Analyse (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB global x;global X;global x_flag;global X_flag;if(x_flag)X=fft(x);X_flag=1;endif(X_flag)stem(handles.FD,linspace(0,2*pi,length(X)),abs( X));xlim(handles.FD,[0,2*pi])end% --- Executes on button press in Export. function Export_Callback(hObject, eventdata, handles)% hObject handle to Export (see GCBO)% eventdata reserved - to be defined in a future version of MATLABglobal X;global X_flag;if(X_flag)assignin('base',get(handles.edit4,'String'),X); end% --- Executes during object creation, after setting all properties.function text1_CreateFcn(hObject, eventdata, handles)% hObject handle to text1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns calledglobal x_flag;global X_flag;global x;global X;x_flag=0;X_flag=0;x=0;X=0;function name_Callback(hObject, eventdata, handles)% hObject handle to name (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% Hints: get(hObject,'String') returns contents of name as text% str2double(get(hObject,'String')) returns contents of name as a double% --- Executes during object creation, after setting all properties.function name_CreateFcn(hObject, eventdata, handles)if ispc&&isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end% --- Executes on button press in import. function import_Callback(hObject, eventdata, handles)global x;global x_flag;global signal_name;signal_name=get(,'String');x='empty';set(,'String','Notexist,Retry!');x=evalin('base',signal_name);set(,'String','Succeed');x_flag=1;if(x_flag)plot(handles.TD,0:(length(x)-1),x);endset(handles.edit4,'String',strcat('DFT_',signal_na me));function edit4_Callback(hObject, eventdata, handles)function edit4_CreateFcn(hObject, eventdata, handles)if ispc&&isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); endglobal signal_name;2.基于Matlab GUI的数字滤波器分析设计界面设计:程序设计:function varargout = filter(varargin)%EDIT By Yu Yizhe%V1.0%2011/11/20%all right reserve% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @filter_OpeningFcn, ...'gui_OutputFcn', @filter_OutputFcn, ...'gui_LayoutFcn', [], ...'gui_Callback', []);if nargin&&ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1}); endif nargout[varargout{1:nargout}] =gui_mainfcn(gui_State, varargin{:});elsegui_mainfcn(gui_State, varargin{:});end% End initialization code - DO NOT EDIT% --- Executes just before filter is made visible. function filter_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% varargin unrecognizedPropertyName/PropertyValue pairs from the% command line (see VARARGIN)% Choose default command line output for filter handles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes filter wait for user response (see UIRESUME)% uiwait(handles.figure1);% --- Outputs from this function are returned tothe command line.function varargout = filter_OutputFcn(hObject, eventdata, handles)% varargout cell array for returning output args (see VARARGOUT);% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% Get default command line output from handles structurevarargout{1} = handles.output;function text1_CreateFcn(hObject, eventdata, handles)global ch1;global ch2;global ch31;global ch32;ch1=1;ch2=1;ch31=1;ch32=1;function IIRtype_Callback(hObject, eventdata, handles)global ch1;global ch2;global ch31;global ch32;ch31=get(hObject,'Value');function IIRtype_CreateFcn(hObject, eventdata, handles)if ispc&&isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction e11_Callback(hObject, eventdata, handles)function e11_CreateFcn(hObject, eventdata, handles)if ispc&&isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); endfunction e12_Callback(hObject, eventdata, handles)function e12_CreateFcn(hObject, eventdata, handles)if ispc&&isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); endfunction e21_Callback(hObject, eventdata, handles)function e21_CreateFcn(hObject, eventdata, handles)if ispc&&isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); endfunction e22_Callback(hObject, eventdata, handles)function e22_CreateFcn(hObject, eventdata, handles)if ispc&&isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); endfunction e31_Callback(hObject, eventdata, handles)function e31_CreateFcn(hObject, eventdata, handles)if ispc&&isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); endfunction e32_Callback(hObject, eventdata, handles)function e32_CreateFcn(hObject, eventdata, handles)if ispc&&isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); endfunction e41_Callback(hObject, eventdata, handles)function e41_CreateFcn(hObject, eventdata, handles)if ispc&&isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); endfunction e42_Callback(hObject, eventdata, handles)function e42_CreateFcn(hObject, eventdata, handles)if ispc&&isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); endfunction generate_Callback(hObject, eventdata, handles)global ch1;global ch2;global ch31;global ch32;global typech;global w1p;global w1s;global w2p;global w2s;global rp;global rs;if ch1==1typech=ch1*100+ch2*10+ch31;elseif ch2==2typech=ch1*100+ch2*10+ch32;endw1p=str2num(get(handles.e11,'String'));w1s=str2num(get(handles.e12,'String'));w2p=str2num(get(handles.e21,'String'));w2s=str2num(get(handles.e22,'String'));rp=str2num(get(handles.e41,'String'));rs=str2num(get(handles.e42,'String')); Generate(handles);function FIRtype_Callback(hObject, eventdata, handles)global ch1;global ch2;global ch31;global ch32;ch32=get(hObject,'Value');function FIRtype_CreateFcn(hObject, eventdata, handles)if ispc&&isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); endfunction poptype_Callback(hObject, eventdata, handles)global ch1;global ch2;global ch31;global ch32;ch2=get(hObject,'Value');reprint(handles);function poptype_CreateFcn(hObject, eventdata, handles)if ispc&&isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); endfunction iirchoose_ButtonDownFcn(hObject, eventdata, handles)function firchoose_Callback(hObject, eventdata, handles)global ch1;global ch2;global ch31;global ch32;if(get(handles.firchoose,'Value')==0)set(handles.iirchoose,'Value',1);set(handles.FIRtype,'Visible','off');set(handles.IIRtype,'Visible','on');ch1=1;endif(get(handles.firchoose,'Value')==1)set(handles.iirchoose,'Value',0);set(handles.FIRtype,'Visible','on');set(handles.IIRtype,'Visible','off');ch1=2;endreprint(handles);function firchoose_ButtonDownFcn(hObject, eventdata, handles)function iirchoose_Callback(hObject, eventdata, handles)global ch1;global ch2;global ch31;global ch32;if(get(handles.iirchoose,'Value')==0)set(handles.firchoose,'Value',1);set(handles.FIRtype,'Visible','on');set(handles.IIRtype,'Visible','off');ch1=2;endif(get(handles.iirchoose,'Value')==1)set(handles.firchoose,'Value',0);set(handles.FIRtype,'Visible','off');set(handles.IIRtype,'Visible','on');ch1=1;endreprint(handles);function reprint(handles)global ch1;global ch2;global ch31;global ch32;temp=ch1*10+ch2;tempswitch tempcase {11,12}set(handles.add1,'Visible','off');set(handles.add2,'Visible','off');set(handles.e21,'Visible','off');set(handles.e22,'Visible','off');set(handles.pr,'Visible','on'); case{13,14}set(handles.add1,'Visible','on');set(handles.add2,'Visible','on');set(handles.e21,'Visible','on');set(handles.e22,'Visible','on');set(handles.pr,'Visible','on'); case{21,22},set(handles.add1,'Visible','off');set(handles.add2,'Visible','off');set(handles.e21,'Visible','off');set(handles.e22,'Visible','off');case{23,24},set(handles.add1,'Visible','on');set(handles.add2,'Visible','on');set(handles.e21,'Visible','on');set(handles.e22,'Visible','on');otherwisefprintf('switch error\n');endfunction Generate(handles)global ch1;global ch2;global ch31;global ch32;global typech;global w1p;global w1s;global w2p;global w2s;global rp;global rs;N=0;Wn=0;Wp=0;Wst=0;Rp=0;As=0;ftype='a';b=0;a=0;switch ch2case 1,ftype='low';case 2,ftype='high';case 3,ftype='bandpass';case 4,ftype='stop';endswitch ch2case {1,2}Wp=w1p;Wst=w1s;Rp=rp;As=rs;case {3,4}Wp=[w2p w1p];Wst=[w2s w1s];Rp=rp;As=rs;endswitch ch1 %IIR case 1,switch ch31case 1,[N,Wn]=buttord(Wp,Wst,Rp,As);[b,a]=butter(N,Wn,ftype); case 2,[N,Wn]=cheb1ord(Wp,Wst,Rp,As);[b,a]=cheby1(N,Rp,Wn,ftype);case 3,[N,Wn]=cheb2ord(Wp,Wst,Rp,As);[b,a]=cheby2(N,As,Wn,ftype); case 4,[N,Wn]=ellipord(Wp,Wst,Rp,As);[b,a]=ellip(N,Rp,As,Wn,ftype);endprint4(a,b,handles);case 2 %FIR tranbw=0;N=0;hw=0;Wn=(Wp+Wst)/2;switch ch32case 1, %Rectangular tranbw=1.8;N=ceil(tranbw/abs(w1s-w1p))+1;hw=boxcar(N);case 2, %Hanning tranbw=6.2;N=ceil(tranbw/abs(w1s-w1p))+1;hw=hanning(N);case 3, %Hamming tranbw=6.6;N=ceil(tranbw/abs(w1s-w1p))+1;hw=hamming(N);case 4, %Blackman tranbw=11;N=ceil(tranbw/abs(w1s-w1p))+1;hw=blackman(N);case 5, %KaiserN=(rs-7.95)/2.285/abs(w1s-w1p)+1;N=ceil(N);if (rs>=50)BTA=0.1102*(rs-8.7); elseif(rs>21)BTA=0.5842*(rs-21)^0.4+0.07886*(rs-21);elseBTA=0.5;endhw=kaiser(N,BTA);endh=fir1(N-1,Wn,ftype,hw');print4(h,N,handles);endfunction print4(a,b,handles)global ch1;if(ch1==1) %IIRw=[0:500]*pi/500;axes(handles.axes1);H=freqz(b,a,w);plot(handles.axes1,w/pi,abs(H)); xlabel('\Omega(\pi)');ylabel('|H(j\Omega)|');%axis ([0,0.5,0,1]);axes(handles.axes2);plot(handles.axes2,w/pi,20*log10((abs(H))/max(a bs(H))));xlabel('\Omega(\pi)');ylabel('|H(j\Omega)|,dB');% axis([0,0.5,-30,0]);axes(handles.axes3);plot(handles.axes3,w/pi,angle(H)/pi); xlabel('\Omega(\pi)');ylabel('Phase of H(j\Omega)(\pi)');%axis([0,0.5,-1,1]);t=0:30;axes(handles.axes4);h=impulse(b,a,t);stem(handles.axes4,t,h);xlabel('n');ylabel('Impulse Response');elseif(ch1==2) %FI RN=b;h=a;[H,w]=freqz(h,1);axes(handles.axes1);plot(handles.axes1,w/pi,abs(H)); xlabel('\Omega(\pi)');ylabel('|H(j\Omega)|');%axis ([0,0.5,0,1]);axes(handles.axes2);plot(handles.axes2,w/pi,20*log10((abs(H))/max(a bs(H))));xlabel('\Omega(\pi)');ylabel('|H(j\Omega)|,dB');% axis([0,0.5,-30,0]);axes(handles.axes3);plot(handles.axes3,w/pi,angle(H)/pi); xlabel('\Omega(\pi)');ylabel('Phase ofH(j\Omega)(\pi)');%axis([0,0.5,-1,1]);t=0:N-1;axes(handles.axes4);stem(handles.axes4,t,h);xlabel('n');ylabel('Impulse Response');end六、实验总结这次的数字信号处理实验非常有意义,让我学会了用计算机进行数字信号处理,计算各种参数,绘制出信号的波形,频谱。
本科实验报告实验名称:随机信号分析实验实验一 随机序列的产生及数字特征估计一、实验目的1、学习和掌握随机数的产生方法。
2、实现随机序列的数字特征估计。
二、实验原理1、随机数的产生随机数指的是各种不同分布随机变量的抽样序列(样本值序列)。
进行随机信号仿真分析时,需要模拟产生各种分布的随机数。
在计算机仿真时,通常利用数学方法产生随机数,这种随机数称为伪随机数。
伪随机数是按照一定的计算公式产生的,这个公式称为随机数发生器。
伪随机数本质上不是随机的,而且存在周期性,但是如果计算公式选择适当,所产生的数据看似随机的,与真正的随机数具有相近的统计特性,可以作为随机数使用。
(0,1)均匀分布随机数是最最基本、最简单的随机数。
(0,1)均匀分布指的是在[0,1]区间上的均匀分布,即 U(0,1)。
实际应用中有许多现成的随机数发生器可以用于产生(0,1)均匀分布随机数,通常采用的方法为线性同余法,公式如下:)(m od ,110N ky y y n n -=N y x n n /=序列{}n x 为产生的(0,1)均匀分布随机数。
下面给出了上式的3组常用参数:1、10N 10,k 7==,周期7510≈⨯;2、(IBM 随机数发生器)3116N 2,k 23,==+周期8510≈⨯;3、(ran0)315N 21,k 7,=-=周期9210≈⨯;由均匀分布随机数,可以利用反函数构造出任意分布的随机数。
定理 1.1 若随机变量 X 具有连续分布函数F X (x),而R 为(0,1)均匀分布随机变量,则有)(1R F X x -=由这一定理可知,分布函数为F X (x)的随机数可以由(0,1)均匀分布随机数按上式进行变换得到。
2、MATLAB 中产生随机序列的函数(1)(0,1)均匀分布的随机序列 函数:rand 用法:x = rand(m,n)功能:产生m ×n 的均匀分布随机数矩阵。
(2)正态分布的随机序列 函数:randn 用法:x = randn(m,n)功能:产生m ×n 的标准正态分布随机数矩阵。
本科实验报告实验名称: 数字信号处理实验实验1 利用DFT 分析信号频谱一、实验目的1.加深对DFT 原理的理解。
2.应用DFT 分析信号频谱。
3.深刻理解利用DFT 分析信号频谱的原理,分析现实过程现象及解决办法。
二、实验原理1、DFT 和DTFT 的关系有限长序列()x n 的离散时间傅里叶变换()j X e ω在频率区间(02)ωπ≤≤的N个等分点{(0),(1),(),(1)}x x x k x N-……上的N 个取样值可以由下式表示:2120()|()()01(21)N jkn j Nk k X e x n eX k k N πωωπ--====≤≤--∑由上式可知,序列()x n 的N 点DFT ()X k ,实际上就是()x n 序列的DTFT 在N 个等间隔频率点{(0),(1),(),(1)}X X X k X N -……上样本()X k 。
2、利用DFT 求DTFT方法1:由()X k 恢复出()j X eω的方法如图2.1所示:图 2.1.由 N 点DFT 恢复频谱DTFT 的流程由图2.1所示流程图可知:01()()()(22)j j nkn j n N n n k X e x n eX k W e N ωωω∞∞∞---=-∞=-∞=⎡⎤==-⎢⎥⎣⎦∑∑∑ 由式2-2可以得到12()()()(23)Nj k kx e X k N ωπφω==--∑其中()x φ为内插函数12sin()2()(24)sin()2N j N e N ωωφωω--=•-方法2:然而在实际MATLAB 计算中,上诉插值公式不见得是最好的方法。
由于DFT是DTFT 的取样值,其相邻的两个频率样本点的间距为2Nπ,所以如果我们增加数据的长度N ,使得得到的DFT 谱线就更加精细,其包络就越接近DTFT 的结果,这样可以利用DFT 来近似计算DTFT 。
如果没有更多的数据,可以通过补零来增加数据长度。
实验3信号的频域分析1•深入理解信号频谱的概念,掌握信号的频域分析方法。
2. 观察典型周期信号和非周期信号的频谱,掌握其频谱特性。
二、实验原理1.连续周期信号的频谱分析如果周期信号满足Dirichlet条件,就可以展开为傅里叶级数的形式,即1 x(t) =C k e jk 0t ,c k - x(t)e 』0tdt 式中,T 。
表示基波周期,「o=2「:/T 。
— To To 为基波周期, 心表示任一个基波周期内的积分。
上述两式定义为周期信号复 指数形式的傅里叶级数,系数 Ck 称为x(t)的傅里叶级数。
周期信号的傅里叶级数还可以由三角函数的线性组合来表示,即r(t) =+》a k coska )Q t +,瓦五讹也詁 k^l其中 1 f 第一式中同频率的正弦项和余弦项可以合并, 从而得到三角函数形式的傅里 叶级数,即r(t) =+》血cos (肋芯 + 5k ) 其中 可见,任何满足Dirichlet 条件的周期信号都可以表示成一组谐波关系的复指 数函数或三角函数的叠加。
一般来说周期信号表示为傅里叶级数时需要无限多项 才能完全逼近原信号,但是在实际应用中经常采用有限项级数来替代,所选项数越多就越逼近原信号。
实验目的k=l f2 光(t)cosk%tdt , b k = — T 0 ◎k=l2.连续非周期信号的频谱分析对于非周期连续时间信号,信号的傅里叶变换和傅里叶逆变换定义为上述两式把信号的时域特性和频域特性联系起来,确定了非周期信号x(t)和频谱X( ■)之间的关系。
采用MATLAB 可以方便的求取非周期连续时间信号的傅里叶变换。
1) 符号运算法MATLAB 的符号数学工具箱提供了直接求解傅里叶变换和反变换的函数,fourier 函数和ifourier 函数,基本调用格式为跖-门叫曲:旳,-逬!片)默认的时域变量为t ,频域变量为2) 数值积分法除了采用符号运算的方法外,我们还可以利用MATLAB 的quad 函数,采用 数值积分的方法来进行连续信号的频谱分析。
信号与系统实验报告信号与系统实验报告一、引言信号与系统是电子信息工程领域中的重要基础课程,通过实验可以加深对于信号与系统理论的理解和掌握。
本次实验旨在通过实际操作,验证信号与系统的基本原理和性质,并对实验结果进行分析和解释。
二、实验目的本次实验的主要目的是:1. 了解信号与系统的基本概念和性质;2. 掌握信号与系统的采样、重建、滤波等基本操作;3. 验证信号与系统的时域和频域特性。
三、实验仪器与原理1. 实验仪器本次实验所需的主要仪器有:信号发生器、示波器、计算机等。
其中,信号发生器用于产生不同类型的信号,示波器用于观测信号波形,计算机用于数据处理和分析。
2. 实验原理信号与系统的基本原理包括采样定理、重建定理、线性时不变系统等。
采样定理指出,对于带限信号,为了能够完全恢复原始信号,采样频率必须大于信号最高频率的两倍。
重建定理则是指出,通过理想低通滤波器可以将采样得到的离散信号重建为连续信号。
四、实验步骤与结果1. 采样与重建实验首先,将信号发生器输出的正弦信号连接到示波器上,观察信号的波形。
然后,将示波器的输出信号连接到计算机上,进行采样,并通过计算机对采样信号进行重建。
最后,将重建得到的信号与原始信号进行对比,分析重建误差。
实验结果显示,当采样频率满足采样定理时,重建误差较小,重建信号与原始信号基本一致。
而当采样频率不满足采样定理时,重建信号存在失真和混叠现象。
2. 系统特性实验接下来,通过调节示波器和信号发生器的参数,观察不同系统对信号的影响。
例如,将示波器设置为高通滤波器,通过改变截止频率,观察信号的低频衰减情况。
同样地,将示波器设置为低通滤波器,观察信号的高频衰减情况。
实验结果表明,不同系统对信号的频率特性有着明显的影响。
高通滤波器会使低频信号衰减,而低通滤波器则会使高频信号衰减。
通过调节滤波器的参数,可以实现对信号频率的选择性衰减。
五、实验分析与讨论通过本次实验,我们对信号与系统的基本原理和性质有了更深入的理解。
实验一信号的时域描述与运算
一、实验目的
①掌握信号的MATLAB表示及其可视化方法。
②掌握信号基本时域运算的MATLAB实现方法。
③利用MATLAB分析常用信号,加深对信号时域特性的理解。
二、实验原理与方法
1. 连续时间信号的MATLAB表示
连续时间信号指的是在连续时间范围内有定义的信号,即除了若干个不连续点外,在任何时刻信号都有定义。
在MATLAB中连续时间信号可以用两种方法来表示,即向量表示法和符号对象表示法。
从严格意义上来说,MATLAB并不能处理连续时间信号,在MATLAB中连续时间信号是用等时间间隔采样后的采样值来近似表示的,当采样间隔足够小时,这些采样值就可以很好地近似表示出连续时间信号,这种表示方法称为向量表示法。
表示一个连续时间信号需要使用两个向量,其中一个向量用于表示信号的时间范围,另一个向量表示连续时间信号在该时间范围内的采样值。
例如一个正弦信号可以表示如下:
>> t=0:0.01:10;
>> x=sin(t);
利用plot(t,x)命令可以绘制上述信号的时域波形,如图1所示。
如果连续时间信号可以用表达式来描述,则还可以采用符号表达式來表示信号。
例如对于上述正弦信号,可以用符号对象表示如下:
>> x=sin(t);
>> ezplot(X);
利用ezplot(x)命令可以绘制上述信号的时域波形
Time(seconds)
图1 利用向量表示连续时间信号常用的信号产生函数
sin(t)
t
图 2 利用符号对象表示连续时间信号2.连续时间信号的时域运算
对连续时间信号的运算包括两信号相加、相乘、微分、积分,以及位移、反转、尺度变换(尺度伸缩)等。
1)相加和相乘
信号相加和相乘指两信号对应时刻的值相加和相乘,对于两个采用向量表示的可以直接使用算术运算的运算符“+”和“*”来计算,此时要求表示两信号的向量时间范围和采样间隔相同。
采用符号对象表示的两个信号,可以直接根据符号对象的运算规则运算。
2)微分和积分
对于向量表示法表示的连续时间信号,可以通过数值计算的方法计算信号的微分和积分。
这里微分使用差分来近似求取的,由时间向量[N t t t ,,,21⋯]和采样值向量[N x x x ,,,21⋯]
表示的连续时间信号,其微分可以通过下式求得
1,,2,1,|)('1-⋯=∆-≈
+=N k t x x t x k
k t t k
其中t ∆表示采样间隔。
MATLAB 中用diff 函数来计算差分
k
k x x -+1。
连续时间信号的定积分可以由MATLAB 的qud 函数实现,调用格式为
quad ('function_name',a,b)
其中,function_name 为被积函数名,a 、b 为积分区间。
对于符号对象表示的连续时间信号,MATLAB 提供了diff 函数和quad 函数分别用于求微分和积分。
3.离散时间信号的MATLAB 表示
离散时间信号仅在一些离散时刻有定义。
在MATLAB 中离散时间信号需要使用两个向量来表示,其中一个向量用于表示离散的时间点,另一个向量表示在这些时间点上的值。
例如对于如下时间信号
}3,2,1,1,2,1,2,3{)(---=n x 采用MATLAB 可以表示如下: >> n=-3:4;
>> x=[-3 2 -1 2 1 -1 2 3]; >> stem(n,x,'filled'); >> xlabel('n');
>> title('x(n)');
Stem函数用于绘制离散时间信号波形,为了与我们表示离散时间信号的习惯相同,在绘图时一般需要添加‘filled’选项,以绘制实心的杆状图形。
上述命令绘制的信号时域波形如图3所示。
n
图3 离散时间信号示例
4.离散时间信号的时域运算
离散时间信号的相加相乘是将两个信号对应的时间点上的值相加或相乘,可以直接使用算术运算的运算符“+”和“*”来计算。
离散时间信号的位移,则可看作是将表示时间的向量平移,而表示对应时间点上的值的向量不变。
离散时间信号的反转,则可以看作是将表示时间的向量和表示对应时间点上的值的向量以零点为基准点,一纵轴为对称轴反折,向量的反折可以利用MATLAB的fliplr函数实现。
三、实验内容
(1)、利用MATLAB绘制下列连续时间信号的波形:
1、
)(
)
1(
)(5.0t
u
e
t
x t
-
-
=
(1)
1、
>> syms t;
>> x(t)=(1-exp(-0.5*t))*heaviside(t) x(t) =
-heaviside(t)*(exp(-t/2) - 1) >>
ezplot(x)
1
2
34
5
6
00.10.20.30.40.50.60.70.80.9
1t
-heaviside(t) (exp(-t/2) - 1)
2、)]2()()[cos(
)(--=t u t u t t x π >> syms t;
>> x=cos(pi*t)*(heaviside(t)-heaviside(t-2)) x =
-cos(pi*t)*(heaviside(t - 2) - heaviside(t))
>> ezplot(x)。