北理工数字信号处理实验

合集下载

北理工信号与系统实验(4)

北理工信号与系统实验(4)

实验4 LTI 系统的频域分析一、 实验目的1. 加深对LTI 系统频率响应基本概念的掌握和理解2. 学习和掌握LTI 系统频率特性的分析方法二、 实验原理1. 连续时间系统的频率响应系统的频率响应定义为系统单位冲激响应h(t)的傅里叶变换,即()()j H h e d ωτωττ+∞--∞=⎰若LTI 连续时间系统的单位冲激响应为h(t),输入信号为x(t),根据系统的时域分析可知系统的零状态响应为(t)x(t)h(t)y =*,对等式两边分别求傅里叶变换,根据时域卷积定理可以得到()X()H()Y ωωω=。

因此,系统的频率响应还可以由系统的零状态响应和输入的傅里叶变换之比得到H()Y()/X()ωωω=。

H()ω反映了LTI 连续时间系统对不同频率信号的响应特性,是系统内在固有的特性,与外部激励无关。

H()ω又可以表示为()H()=|H()|e j θωωω,其中|H()|ω称为系统的幅度响应,()θω称为系统的相位响应。

当虚指数信号e j t ω作用于LTI 系统时,系统的零状态响应y(t)仍为同频率的虚指数信号,即y(t)=e H()j t ωω。

对于由下述微分方程描述的LTI 连续时间系统(n)(m)0(t)(t)NMn m n m a y b x ===∑∑,其频率响应H(j )ω可以表示为有理多项式11101110(j )(j )...j ()()()(j )(j )...j M M M M N N N N b b b b Y H X a a a a ωωωωωωωωω----++++==++++ MATLAB 的信号处理工具箱提供了专门的函数freqs ,用来分析连续时间系统的频率响应,该函数有下列几种调用格式:[h,w]=freqs(b,a) 计算默认频率范围内200个频率点上的频率响应的取样值,这200个频率点记录在w 中。

h=freqs(b,a,w) b 、a 分别为表示H(j )ω的有理多项式中分子和分母多项式的系数向量,w 为频率取样点,返回值h 就是频率响应在频率取样点上的数值向量。

数字信号实验报告二,北京理工大学,实验报告

数字信号实验报告二,北京理工大学,实验报告

实验三利用FFT计算线性卷积一、实验目的1.掌握利用FFT计算线性卷积的原理及具体实现方法。

2.加深理解重叠相加法和重叠保留法。

3.考察利用FFT计算线性卷积各种方法的适用范围。

二、实验设备与环境计算机、MATLAB软件环境三、实验基础理论1.线性卷积与圆周卷积设为L点序列,为M点序列,和的线性卷积为的长度为L+M-1。

和的N点圆周卷积为圆周卷积与线性卷积相等而不产生交叠的必要条件为圆周卷积定理:根据DFT的性质,和的N点圆周卷积的DFT等于它们DFT的乘积2.快速卷积快速卷积算法用圆周卷积实现线性卷积,根据圆周卷积定理利用FFT算法实现圆周卷积。

可以将快速卷积的步骤归纳如下:(1)为了使线性卷积可以利用圆周卷积来计算,必须选择;同时为了能使用基2-FFT 完成卷积运算,要求N =。

采用补零的办法是和的长度均为N 。

(2)计算和的N 点FFTFFT −−−→(3)组成卷积(4)利用IFFT 计算IDFT ,得到线性卷积(k)()IFFT Y y n −−−→3.分段卷积我们考察单位取样响应为的线性系统,输入为,输出为,则当输入序列时再开始进行卷积,会使输出相对输入有较大的延时,再者如果序列太长,需要大量的存储单元。

为此,我们把,分别求出每段的卷积,合在一起其到最后的总输出。

这种方法称为分段卷积。

分段卷积可细分为重叠相加法和重叠保留法。

重叠保留法:设的长度为,的长度为M 。

我们把序列分成多段N 点序列,每段与前一段重叠M-1个样本。

由于第一段没有前一段保留信号,为了修正,我们在第一个输入段前面填充M-1个零。

计算每一段的圆周卷积,则其每段卷积结果的前M-1个样本不等于线性卷积值,不是正确的样本值。

所以我们将每段卷积结果的前M-1个样本舍去,只保留后面的N-M+1个正确输出样本,把这些输出样本合起来得到总的输出。

利用FFT 实现重叠保留法的步骤如下:(1)在前面填充M-1个零,扩大以后的序列为1ˆ(){0,0,0,()}M x n x n -=个(2)将分为若干N 点子段,设L=N-M+1为每一段的有效数据长度,则第i 段〖ˆ(m)x1,0,01iL m iL N i n N ≤≤+-≥≤≤- (3)计算每一段与的N 点圆周卷积,利用FFT 计算圆周卷积:FFT−−−→(k)()IFFT i i Y y n −−−→(4)舍去每一段卷积结果的前M-1个样本,连接剩下样本,得到卷积结果。

北京理工大学信号与系统实验实验报告

北京理工大学信号与系统实验实验报告

北京理工大学信号与系统实验实验报告信号与系统实验报告姓名:肖枫学号:1120111431班号:05611102专业:信息对抗技术学院:信息与电子学院12实验1 信号的时域描述与运算一、实验目的1. 掌握信号的MATLAB表示及其可视化方法。

2. 掌握信号基本时域运算的MATLAB实现方法。

3. 利用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)命令可以绘制上述信号的时域波形10.80.60.40.2-0.2-0.4-0.6-0.8-1012345678910Time(seconds)图1 利用向量表示连续时间信号3sin(t)10.5-0.5-1-6-4-20246t图 2 利用符号对象表示连续时间信号常用的信号产生函数函数名功能函数名功能 heaviside 单位阶跃函数 rectpuls 门函数 sin 正弦函数 tripuls 三角脉冲函数 cos 余弦函数 square 周期方波 sinc sinc函数 sawtooth 周期锯齿波或三角波 exp 指数函数2.连续时间信号的时域运算对连续时间信号的运算包括两信号相加、相乘、微分、积分,以及位移、反转、尺度变换(尺度伸缩)等。

北京理工大学信号与系统实验报告8 调制与解调

北京理工大学信号与系统实验报告8 调制与解调

实验8 调制与解调(设计型实验)一、实验目的1) 加深理解信号调制和解调的基本原理2) 从时域和频域分析信号幅度调制和解调的过程 3) 掌握幅度调制和解调的实现方法 二、实验原理与方法 1. 调制与解调在通信系统中,信号传输之前通常需要在发送端将信号进行调制,转换成为适合传输的信号,在接收端则需要进行解调,将信号还原成原来的信息。

在实际应用中,有多种调制方法,最常用的模拟调制方式是用正弦波作为载波的幅度调制、频率调制和相位调制3种方式,其中幅度调制(AM )属于线性调制,这里重点介绍AM 调制的基本原理。

正弦幅度调制和解调的原理框图如下:x(t)为调制信号,cos(w 0t)为载波,g(t)为已调信号。

调制信号与载波信号相乘可以得到已调信号,即g(t)=x(t)* cos(w 0t) 载波频谱为00()()()P ωπδωωπδωω=-++ 有频域卷积定理g(t)=x(t)* cos(w 0t)的频谱为0011G()[X()P()][X()()]22X ωωωωωωωπ=*=-++ 在调制过程中信号的所有信息X(w)均被保留了下来,,只是被移到了较高的频率上。

为使G()ω中两个非零部分不重叠,应满足0m ωω>。

解调过程中,将g(t)乘以本振信号cos(w 0t)得r(t),本振信号的频率与调制过程中载波信号频率相同,这种方法称为同步解调。

200011(t)g(t)cos(t)(t)cos (t)(t)(t)cos(2t)22r x x x ωωω=*==+ 从频域上看,根据频域卷积定理可以求出(t)g(t)p(t)r =的频谱为00()[X(2)]/4X()/2[X(2)]/4R ωωωωωω=-+++将r(t)通过一定的低通滤波器滤除频率为02ω的分量,则可恢复出原始信号。

已调信号g(t)=x(t)* cos(w 0t)的频谱只含上下边带成分,抑制了载波分量,称为抑制载波双边带(DSB-SC )调幅;而具有s(t)=[A+x(t)]cos(w 0t)形式的已调信号频谱中包含载波和上下边带,称为双边带(DSB )调幅2. 低通滤波器的MATLAB 实现解调过程中需要使用低通滤波器恢复原始信号,MATLAB 和Simulink 都提供了强大功能用于滤波器的设计。

北京理工大学信号与系统实验报告3信号的频域分析报告

北京理工大学信号与系统实验报告3信号的频域分析报告

实验3 信号的频域分析(综合型实验)一、实验目的1)深入理解信号频谱的概念,掌握信号的频域分析方法。

2)观察典型周期信号和非周期信号的频谱,掌握其频谱特性。

二、实验原理与方法 1.连续周期信号的频谱分析如果周期信号满足Dirichlet 条件,就可展开为傅里叶级数的形式,即0(t)jk tkk x c eω+∞=-∞=∑(1) 0001(t)e jk tk T c x dt T ω-=⎰(2) 其中0T 表示基波周期,002/T ωπ=为基波频率,0(...)T ⎰表示任一个基波周期内的积分。

上面两式为周期信号复指数形式的傅里叶级数,系数k c 成为x(t)的傅里叶系数。

周期信号的傅里叶级数还可由三角函数的线性组合来表示,即00011(t)cos sin k k k k x a a k t b k t ωω+∞+∞===++∑∑(3)其中000000000122(t),(t)cosk ,(t)sink k k T T T a x dt a x tdt b x tdt T T T ωω===⎰⎰⎰(4) (3)式中同频率的正弦、余弦项合并可以得到三角函数形式的傅里叶级数,即001(t)cos(k t )k k k x A A ωθ+∞==++∑ (5)其中00,arctankk k kb A a A a θ===- (6) 任何满足Dirichlet 条件的周期信号都可以表示成一组谐波关系的复指数函数或三角函数的叠加。

周期信号表示为傅里叶级数时需要无限多项才能完全逼近原信号,但在实际应用中常采用有限项级数代替,所选级数项越多就越接近原信号。

2.连续非周期信号的频谱分析对于非周期连续时间信号,信号的傅里叶变换和傅里叶逆变换定义为()(t)ej tX x dt ωω+∞--∞=⎰(7)1(t)()e 2j t x X d ωωωπ+∞-∞=⎰(8)以上两式把信号的时频特性联系起来,确立了非周期信号(t)x 和频谱()X ω之间的关系。

北京理工大学 数字信号处理 实验报告 程序

北京理工大学 数字信号处理 实验报告 程序

数字信号处理实验报告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六、实验总结这次的数字信号处理实验非常有意义,让我学会了用计算机进行数字信号处理,计算各种参数,绘制出信号的波形,频谱。

北理工数字信号处理实验一

北理工数字信号处理实验一

实验一基2-FFT算法实现
实验目的
1、掌握基2-FFT的原理及具体实现方法。

2、编程实现基2-FFT算法。

3、加深理解FFT算法的特点。

实验设备与环境
计算机、MATLAB软件环境
实验原理
FFT是一种DFT的高效算法,称为快速傅立叶变换(fast Fourier transform)。

FFT算法可分为按时间抽取算法和按频率抽取算法,先简要介绍FFT的基本原理。

从DFT运算开始,说明FFT的基本原理。

FFT算法基本上可以分为两大类,即按时间抽取法和按频率抽取法。

实验内容
1.编程实现序列长度N=8的按时间抽取的基2-FFT算法。

给定一个8点序列,采用编写的
程序计算其DFT,并与MATLAB中的fft函数计算的结果相比较,以验证结果的正确性。

结果如下:
验证如下:
2.编程实现序列长度为N=8的按频率抽取的基2-FFT算法。

给定一个8点序列,采用编写
的程序计算其DFT,并与MATLAB中fft函数计算的结果相比较,以验证结果的正确性。

心得与体会
通过本次实验,我加深了对课堂上所学的FFT运算的理解,掌握了如何用matlab实现基2-FFT 算法。

过程中在编程上有一些不熟练,经过老师同学的帮助,最终得以完成。

北理工信号实验报告

北理工信号实验报告

北理工信号实验报告1. 实验目的本实验旨在通过对北理工信号实验的探索与学习,加深对数字信号处理的理解。

具体目标如下:- 了解信号处理的基本概念和基本原理;- 掌握数字信号的模拟与数字转换方法;- 学会使用MATLAB进行信号处理实验。

2. 实验原理信号处理是对信号进行采样、量化和编码等操作,将连续的模拟信号转换成离散的数字信号的过程。

数字信号由一系列的采样值组成,这些采样值是模拟信号在离散时间点上的近似值。

数字信号的采样率和量化位数是决定信号质量的重要因素。

实验中采集的信号是通过模拟方式产生的,通过模拟-数字转换芯片将模拟信号转换为数字信号。

然后使用MATLAB对这些数字信号进行采样、量化、编码和解码等操作。

3. 实验内容本次实验进行了如下几个实验操作和内容:- 使用函数`sin`生成一个频率为1000Hz,振幅为2的正弦信号;- 将生成的信号进行采样操作,并绘制采样后的信号图像;- 对采样信号进行离散傅立叶变换,并绘制频谱图像;- 对频谱进行低通滤波,并绘制滤波后的频谱图像;- 对滤波后的信号进行解码,并绘制解码后的信号图像;4. 实验结果与分析通过实验,我们得到了以下结果和分析:首先,我们生成了频率为1000Hz,振幅为2的正弦信号,并进行了采样操作。

通过绘制采样后的信号图像,可以看到信号的周期性,但呈现离散的特点。

然后,我们对采样信号进行离散傅立叶变换,得到了频谱图像。

通过观察频谱图像,我们可以清晰地看到信号的频率信息。

在频谱图像中,频率为1000Hz的正弦信号对应的频率分量明显。

接下来,我们对频谱进行低通滤波,滤除高频分量。

通过绘制滤波后的频谱图像,可以观察到高频分量被滤除了,只保留了低频分量。

最后,我们对滤波后的信号进行解码,并绘制解码后的信号图像。

通过观察解码后的信号图像,我们可以看到滤波后的信号与原始信号比较接近。

解码过程可以还原数字信号为模拟信号,使得信号能够以连续的形式传输和显示。

北京理工大学数字信号处理A课程设计项目

北京理工大学数字信号处理A课程设计项目

数字信号处理基于MATLAB及GUI的DSP软件系统班级:05941401姓名:xxx学号:112014xxxx(一)设计原理利用matlab及其自带的GUI系统制作可视化界面,通过对界面内各部件的回调函数的编写,实现各种内部功能。

1.产生信号利用popupmenu的value值配合switch/case语句产生不同的信号。

并获取输入的频率以及加噪噪声信噪比,代入产生的信号中。

①方波、三角波②单个正弦信号、线性调频信号(Chirp信号)③多个正弦信号④高斯白噪声⑤单个正弦波+高斯白噪声⑥多个正弦波+高斯白噪声⑦Chirp信号+高斯白噪声2.谱分析依旧用switch/case语句。

(1)频谱分析:求信号y的FFT,得Y,对Y求绝对值abs。

以方波信号的频谱为例:(2)功率谱分析:求信号y的FFT,得Y,对Y的幅值平方,除以采样点数N,再求其10log()值。

以单个正弦波+高斯白噪声为例:3.滤波器通过下拉菜单的value值与switch/case语句控制产生何种滤波器。

(1)低通滤波器获取输入的通带截止频率与阻带截止频率,产生巴特沃斯低通滤波器。

并用filter函数对产生信号进行滤波处理。

(2)带通滤波器获取输入的上限截止频率与下限截止频率,产生切比雪夫I型带通滤波器。

并用filter函数对产生信号进行滤波处理。

(3)高通滤波器获取输入的通带截止频率与阻带截止频率,产生切比雪夫高通滤波器。

并用filter函数对产生信号进行滤波处理。

(二)设计方案1.软件系统框图2.程序流程框图1.产生信号模块可以编辑信号的频率,需要加噪时,可以选择噪声强度(信噪比),对于多正弦波的合成,可以自定义各正弦波的频率(最多四个)。

可以显示产生的信号的时域波形。

2.频谱功率谱模块对产生的信号进行频谱分析,对加噪的信号另进行功率谱分析。

默认采样频率为1000Hz,因此产生信号频率应尽量选择在500Hz以下。

3.滤波模块通过设置截止频率产生不同形式的滤波器,显示该滤波器的幅频特性曲线,并对产生的信号进行滤波,显示滤波后波形。

(2023)304编号北京理工大学信号与系统实验报告5连续时间系统的复频域分析(一)

(2023)304编号北京理工大学信号与系统实验报告5连续时间系统的复频域分析(一)

(2023)304编号北京理工大学信号与系统实验报告5连续时间系统的复频域分析(一)关于北京理工大学信号与系统实验报告5实验编号(2023)304实验名称信号与系统实验报告5:连续时间系统的复频域分析实验目的通过本实验,掌握连续时间系统的复频域分析的基本原理和方法,熟练掌握求解复频域中系统的幅度谱和相位谱的方法,提高对系统频域特性的认识。

实验内容实验内容主要分为以下几部分:1.实验仪器和元件的使用2.连续时间系统的频域分析方法3.MATLAB工具箱的应用实验过程1.使用示波器、函数发生器等实验仪器,搭建连续时间系统。

2.将系统的输入信号和输出信号从时域表示转换为复频域表示。

3.根据复频域表示求解系统的幅度谱和相位谱。

4.使用MATLAB工具箱验证实验结果。

5.分析实验结果,总结连续时间系统的频域特性。

实验结论通过本实验,我们了解了连续时间系统的复频域分析方法,熟悉了求解幅度谱和相位谱的步骤,并通过实验验证了所学内容的正确性。

同时,我们也认识到了连续时间系统在频域中的特性和应用范围。

实验感受本实验对我们的信号与系统学习提供了重要的实践环节,让我们更加深入地理解了信号与系统的频域分析方法,并对自己的专业兴趣产生了更深刻的认识。

同时,实验过程中我们也体验到了探索和解决问题的乐趣,收获了宝贵的经验。

实验注意事项1.实验中的电路连接应符合要求,注意仪器的使用和安全操作。

2.合理调整示波器、函数发生器等参数,以确保实验效果。

3.对于MATLAB工具箱的使用应具备一定的基础。

4.实验报告应准确记录实验过程中的操作、数据和可视化结果。

实验改进方向1.加强理论基础知识的学习,深入了解系统的频域特性。

2.进一步利用MATLAB及其他工具箱进行系统的分析和模拟,提高实验的精度和可靠性。

3.可尝试采用不同的连续时间系统进行分析和比较,从而更好地认识连续时间系统的特性。

实验意义通过本实验,我们对信号与系统的频域分析方法和连续时间系统的特性有了更深入的了解和认识。

北理工数字信号处理实验

北理工数字信号处理实验

本科实验报告实验名称:数字信号处理实验课程名称:数字信号处理实验实验时间:任课教师:实验地点:实验教师:实验类型:□原理验证□综合设计□自主创新学生姓名:学号/班级:组号:学院:同组搭档:专业:成绩:实验1 利用DFT分析信号频谱一、实验目的1.加深对DFT原理的理解。

2.应用DFT分析信号频谱。

3.深刻理解利用DFT分析信号频谱的原理,分析现实过程现象及解决办法。

二、实验原理1、DFT和DTFT的关系有限长序列()x n的离散时间傅里叶变换()jX eω在频率区间(02)ωπ≤≤的N个等分点{(0),(1),(),(1)}x x x k x N-……上的N个取样值可以由下式表示:212()|()()01(21)N j knj NkkX e x n e X 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恢复出()jX eω的方法如图2.1所示:图 2.1.由 N点DFT恢复频谱DTFT的流程由图2.1所示流程图可知:1()()()(22) j j n kn j nNn n kX e x n e X k W eNωωω∞∞∞---=-∞=-∞=⎡⎤==-⎢⎥⎣⎦∑∑∑由式2-2可以得到12()()()(23)Njkkx e X kNωπφω==--∑其中()xφ为内插函数12sin()2()(24)sin()2N j N e N ωωφωω--=•-方法2:然而在实际MATLAB 计算中,上诉插值公式不见得是最好的方法。

由于DFT 是DTFT的取样值,其相邻的两个频率样本点的间距为2Nπ,所以如果我们增加数据的长度N ,使得得到的DFT 谱线就更加精细,其包络就越接近DTFT 的结果,这样可以利用DFT 来近似计算DTFT 。

北理工信号与系统实验报告

北理工信号与系统实验报告

������������ ������ ������������ ������ 0 ������
������������ =
1 ������0
������(������)������ −������������ ������ 0 ������ ������������
������0
上述两式定义为周期信号复指数形式的傅里叶级数,系数 Ck 称为 x(t)的傅 里叶级数。周期信号的傅里叶级数还可以由三角函数的线性组合来表示,即
xlabel('n') title('y[n]') 程序运行结果如下:
x[n] 1 0.5 0 -0.5 -1 1 0.5 0 -0.5 -1 y[n] 4 h[n]
0
5
10 n
15
20
0
5
10 n
15
20
2
0
-2
0
5
10
15
20 n
25
30
35
40
7.已知两个连续时间信号,求两个信号的卷积。 程序如下: w1=2; w2=4; dt=0.01; t1=-2:dt:2; t2=-4:dt:4; x1=2*rectpuls(t1,w1) x2=rectpuls(t2,w2) x=conv(x1,x2); x=x*dt; t0=t1(1)+t2(1); t3=length(x1)+length(x2)-2; t=t0:dt:(t3*dt+t0); plot(t,x); axis([-4 4 -2 6]); xlabel('t'); title('x(t)'); 程序运行结果如下:
an y (n) (t ) an1 y (n1) (t ) a1 y ' (t ) a0 y(t ) bm x (m) (t ) bm1 x (m1) (t ) b1 x ' (t ) b0 x(t )

北京理工大学信号和系统实验报告材料

北京理工大学信号和系统实验报告材料

本科实验报告实验名称:信号与系统实验实验一信号的时域描述与运算一、实验目的①掌握信号的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)命令可以绘制上述信号的时域波形常用的信号产生函数-1-0.8-0.6-0.4-0.200.20.40.60.81Time(seconds)图1 利用向量表示连续时间信号2.连续时间信号的时域运算对连续时间信号的运算包括两信号相加、相乘、微分、积分,以及位移、反转、尺度变换(尺度伸缩)等。

1)相加和相乘信号相加和相乘指两信号对应时刻的值相加和相乘,对于两个采用向量表示的可以直接使用算术运算的运算符“+”和“*”来计算,此时要求表示两信号的向量时间范围和采样间隔相同。

北理工数字信号处理实验4窗函数法设计FIR数字滤波器剖析

北理工数字信号处理实验4窗函数法设计FIR数字滤波器剖析

实验4 窗函数法设计FIR数字滤波器一、实验目的掌握窗函数法和频率取样法设计FIR数字滤波器的原理及具体方法二、实验设备与环境计算机、MATLAB软件环境三、实验理论基础四、实验内容1、设计一个数字低通FIR 滤波器,其技术指标如下0.2,0.250.3,50p p st s R dB A dBωπωπ====分别采用矩形窗、汉宁窗、海明窗、布莱克曼窗、凯瑟窗设计该滤波器。

结合实验结果,分别讨论采用上述方法设计的数字滤波器是否都能满足给定指标要求。

解: ①矩形窗 wp=0.2*pi; wst=0.3*pi;tr_width=wst-wp;N=ceil(1.8*pi/tr_width)+1; n=0:(N-1);wc=(wp+wst)/2; alpha=(N-1)/2;hd=(wc/pi)*sinc((wc/pi)*(n-alpha)); w_boxcar=boxcar(N)'; h=hd.*w_boxcar; subplot(221); stem(n,hd,'filled'); axis tight; xlabel('n'); ylabel('hd(n)');[Hr,w1]=zerophase(h); subplot(222); plot(w1/pi,Hr); axis tight;xlabel('\omega/\pi'); ylabel('H(\omega)'); subplot(223); stem(n,h,'filled'); axis tight; xlabel('n'); ylabel('h(n)'); [H,w]=freqz(h,1); subplot(224);plot(w/pi,20*log10(abs(H)/max(abs(H)))); xlabel('\omega/\pi'); ylabel('dB'); grid on结果:n h d (n )0.20.40.60.800.51ω/πH (ω)n h (n )0.51-100-50ω/πd B不满足指标要求 ②汉宁窗 wp=0.2*pi; wst=0.3*pi;tr_width=wst-wp;N=ceil(6.2*pi/tr_width)+1; n=0:(N-1);wc=(wp+wst)/2; alpha=(N-1)/2;hd=(wc/pi)*sinc((wc/pi)*(n-alpha)); w_boxcar=hanning(N)'; h=hd.*w_boxcar; subplot(221); stem(n,hd,'filled'); axis tight; xlabel('n'); ylabel('hd(n)');[Hr,w1]=zerophase(h); subplot(222); plot(w1/pi,Hr); axis tight;xlabel('\omega/\pi'); ylabel('H(\omega)'); subplot(223); stem(n,h,'filled'); axis tight; xlabel('n'); ylabel('h(n)');[H,w]=freqz(h,1); subplot(224);plot(w/pi,20*log10(abs(H)/max(abs(H)))); xlabel('\omega/\pi'); ylabel('dB'); grid on 结果:nh d (n )00.20.40.60.80.51ω/πH (ω)nh (n )0.51-200-150-100-50ω/πd B不满足指标要求 ③海明窗 wp=0.2*pi; wst=0.3*pi;tr_width=wst-wp;N=ceil(6.6*pi/tr_width)+1; n=0:(N-1);wc=(wp+wst)/2; alpha=(N-1)/2;hd=(wc/pi)*sinc((wc/pi)*(n-alpha)); w_boxcar=hamming(N)'; h=hd.*w_boxcar; subplot(221); stem(n,hd,'filled'); axis tight; xlabel('n'); ylabel('hd(n)');[Hr,w1]=zerophase(h); subplot(222); plot(w1/pi,Hr); axis tight;xlabel('\omega/\pi');ylabel('H(\omega)'); subplot(223); stem(n,h,'filled'); axis tight; xlabel('n'); ylabel('h(n)'); [H,w]=freqz(h,1); subplot(224);plot(w/pi,20*log10(abs(H)/max(abs(H)))); xlabel('\omega/\pi'); ylabel('dB'); grid on 结果:n h d (n )00.20.40.60.80.51ω/πH (ω)n h (n )0.51-150-100-50ω/πd B满足指标要求 ④布莱克曼窗 wp=0.2*pi; wst=0.3*pi;tr_width=wst-wp;N=ceil(11*pi/tr_width)+1; n=0:(N-1);wc=(wp+wst)/2; alpha=(N-1)/2;hd=(wc/pi)*sinc((wc/pi)*(n-alpha)); w_boxcar=blackman(N)'; h=hd.*w_boxcar; subplot(221); stem(n,hd,'filled'); axis tight; xlabel('n');ylabel('hd(n)');[Hr,w1]=zerophase(h); subplot(222); plot(w1/pi,Hr); axis tight;xlabel('\omega/\pi'); ylabel('H(\omega)'); subplot(223); stem(n,h,'filled'); axis tight; xlabel('n'); ylabel('h(n)'); [H,w]=freqz(h,1); subplot(224);plot(w/pi,20*log10(abs(H)/max(abs(H)))); xlabel('\omega/\pi'); ylabel('dB'); grid on 结果:nh d (n )00.20.40.60.80.51ω/πH (ω)nh (n )0.51-200-150-100-50ω/πd B满足指标要求 ⑤凯瑟窗wp=0.2*pi;Rp=0.25; wst=0.3*pi;As=50; tr_width=wst-wp;N=ceil((As-7.95)/2.285/tr_width)+1; B=0.1102*(As-8.7);n=0:(N-1);wc=(wp+wst)/2; alpha=(N-1)/2;hd=(wc/pi)*sinc((wc/pi)*(n-alpha));w_kaiser=kaiser(N,B)'; h=hd.*w_kaiser; subplot(221); stem(n,hd,'filled'); [Hr,wl]=zerophase(h); subplot(222); plot(wl/pi,Hr); subplot(223); stem(n,h,'filled'); [H,w]=freqz(h,1); subplot(224);plot(w/pi,20*log10(abs(H)/max(abs(H)))); grid on 结果:020406000.51-0.500.511.5020406000.51-150-100-50不满足指标要求2、设计一个数字带通FIR 滤波器,其技术指标如下11220.2,600.35,10.65,10.8,60st S p p p p st S A dBR dB R dB A dBωπωπωπωπ========下阻带边缘:下通带边缘:上通带边缘:上阻带边缘:解: 代码:wp1=0.35*pi;Rp=1; wp2=0.65*pi;wst1=0.2*pi;As=50; wst2=0.8*pi;tr_width=wp1-wst1;N=ceil(11*pi/tr_width)+1; n=0:(N-1);wc1=(wp1+wst1)/2; wc2=(wp2+wst2)/2; alpha=(N-1)/2;hd=(wc2/pi)*sinc((wc2/pi)*(n-alpha))-(wc1/pi)*sinc((wc1/pi)*(n-alpha)); w_blackman=blackman(N)'; h=hd.*w_blackman; subplot(221); stem(n,hd,'filled'); [Hr,wl]=zerophase(h); subplot(222); plot(wl/pi,Hr); subplot(223); stem(n,h,'filled'); [H,w]=freqz(h,1); subplot(224);plot(w/pi,20*log10(abs(H)/max(abs(H)))); grid on 结果:2040608000.51-0.500.511.502040608000.51-150-100-503、采用频率取样设计法设计FIR 数字低通滤波器,满足以下指标0.2,0.250.3,50p p st s R dB A dBωπωπ====(1)取N=20,过渡带没有样本(2)取N=40,过渡带有一个样本,T=0.39(3)取N=60,过渡带有两个样本,T1=0.5925,T2=0.1099(4)分别讨论采用上述方法设计的数字滤波器是否都能满足给定指标要求解:①N=20;alpha=(N-1)/2;l=0:N-1;wl=(2*pi/N)*l;Hrs=[1,1,1,zeros(1,15),1,1];Hdr=[1,1,0,0];wdl=[0,0.25,0.25,1];k1=0:floor((N-1)/2);k2=floor((N-1)/2)+1:N-1;angH=[-alpha*(2*pi)/N*k1,alpha*(2*pi)/N*(N-k2)]; H=Hrs.*exp(j*angH);h=ifft(H,N);w=[0:500]*pi/500;H=freqz(h,1,w);[Hr,wr]=zerophase(h);subplot(221);plot(wdl,Hdr,wl(1:11)/pi,Hrs(1:11),'o');axis([0,1,-0.1,1.1]);xlabel('\omega(\pi)');ylabel('Hr(k)');subplot(222);stem(l,h,'filled');axis([0,N-1,-0.1,0.3]);xlabel('n');ylabel('h(n)');subplot(223);plot(wr/pi,Hr,wl(1:11)/pi,Hrs(1:11),'o');axis([0,1,-0.2,1.2]);xlabel('\omega(\pi)');ylabel('Hr(w)');subplot(224);plot(w/pi,20*log10((abs(H)/max(abs(H)))));axis([0,1,-50,5]);grid on;xlabel('\omega(\pi)');ylabel('dB');0.51ω(π)H r (k )051015nh (n )0.51ω(π)H r (w )0.51-40-20ω(π)d B②N=40;alpha=(N-1)/2; l=0:N-1;wl=(2*pi/N)*l;Hrs=[1,1,1,1,1,0.39,zeros(1,29),0.39,1,1,1,1]; Hdr=[1,1,0.39,0,0];wdl=[0,0.2,0.25,0.3,1]; k1=0:floor((N-1)/2);k2=floor((N-1)/2)+1:N-1;angH=[-alpha*(2*pi)/N*k1,alpha*(2*pi)/N*(N-k2)]; H=Hrs.*exp(j*angH); h=ifft(H,N);w=[0:500]*pi/500; H=freqz(h,1,w);[Hr,wr]=zerophase(h);subplot(221);plot(wdl,Hdr,wl(1:11)/pi,Hrs(1:11),'o'); axis([0,1,-0.1,1.1]); xlabel('\omega(\pi)'); ylabel('Hr(k)');subplot(222);stem(l,h,'filled'); axis([0,N-1,-0.1,0.3]); xlabel('n');ylabel('h(n)'); subplot(223);plot(wr/pi,Hr,wl(1:11)/pi,Hrs(1:11),'o'); axis([0,1,-0.2,1.2]); xlabel('\omega(\pi)'); ylabel('Hr(w)'); subplot(224);plot(w/pi,20*log10((abs(H)/max(abs(H))))); axis([0,1,-50,5]);grid on;xlabel('\omega(\pi)'); ylabel('dB');0.51ω(π)H r (k )0102030nh (n)0.51ω(π)H r (w )0.51-40-20ω(π)d B③N=60;alpha=(N-1)/2; l=0:N-1;wl=(2*pi/N)*l;Hrs=[1,1,1,1,1,1,1,0.5925,0.1099,zeros(1,43), 0.1099, 0.5925,1,1,1,1,1,1]; Hdr=[1,1,0.5925,0.1099,0,0];wdl=[0,0.2,0.2+1/30,0.3-1/30,0.3,1]; k1=0:floor((N-1)/2);k2=floor((N-1)/2)+1:N-1;angH=[-alpha*(2*pi)/N*k1,alpha*(2*pi)/N*(N-k2)]; H=Hrs.*exp(j*angH); h=ifft(H,N);w=[0:500]*pi/500; H=freqz(h,1,w);[Hr,wr]=zerophase(h); subplot(221);plot(wdl,Hdr,wl(1:11)/pi,Hrs(1:11),'o'); axis([0,1,-0.1,1.1]); xlabel('\omega(\pi)'); ylabel('Hr(k)'); subplot(222); stem(l,h,'filled');axis([0,N-1,-0.1,0.3]); xlabel('n');ylabel('h(n)'); subplot(223);plot(wr/pi,Hr,wl(1:11)/pi,Hrs(1:11),'o'); axis([0,1,-0.2,1.2]); xlabel('\omega(\pi)');ylabel('Hr(w)'); subplot(224);plot(w/pi,20*log10((abs(H)/max(abs(H))))); axis([0,1,-100,5]);grid on;xlabel('\omega(\pi)'); ylabel('dB');0.51ω(π)H r (k )02040nh (n )0.51ω(π)H r (w )0.51-100-50ω(π)d B4、采用频率取样技术设计下面的高通滤波器0.6,500.8,1st s p p A dB R dBωπωπ====对于高通滤波器,N 必须为奇数(或1型滤波器)。

北理信号处理课程设计

北理信号处理课程设计

北理信号处理课程设计一、课程目标知识目标:1. 理解并掌握信号处理的基本概念、原理和方法,如傅里叶变换、滤波器设计等;2. 学会运用信号处理技术分析并解决实际问题,如信号的降噪、特征提取等;3. 了解信号处理在工程领域的应用,如通信、雷达、图像处理等。

技能目标:1. 能够运用所学知识设计简单的信号处理算法,并进行仿真验证;2. 掌握使用信号处理软件(如MATLAB)进行数据处理和分析的基本操作;3. 培养团队协作和沟通能力,通过小组项目实践,提高解决实际问题的能力。

情感态度价值观目标:1. 培养对信号处理学科的兴趣和热情,激发学生主动探索科学问题的精神;2. 树立正确的学术态度,遵循学术规范,尊重知识产权;3. 增强学生的国家意识,了解我国在信号处理领域的发展状况,为我国科技创新贡献力量。

本课程针对北理信号处理课程设计,结合大三年级学生的特点,注重理论与实践相结合,培养学生具备扎实的理论基础和较强的实际操作能力。

课程目标旨在使学生通过本章节的学习,能够全面掌握信号处理的基本知识,具备解决实际问题的能力,同时培养良好的学术素养和团队协作精神。

为实现课程目标,后续教学设计和评估将围绕具体学习成果展开。

二、教学内容本章节教学内容主要包括以下几部分:1. 信号处理基本概念:信号的定义、分类及特性;信号的采样与恢复;信号的时域与频域分析。

2. 傅里叶变换及其应用:傅里叶级数、连续傅里叶变换、离散傅里叶变换;傅里叶变换在信号处理中的应用。

3. 滤波器设计:数字滤波器的基本原理、类型及设计方法;低通、高通、带通和带阻滤波器的设计与应用。

4. 信号处理应用案例分析:通信系统中的信号处理、雷达信号处理、图像处理等。

5. 小组项目实践:运用所学知识,针对实际问题进行信号处理算法设计、仿真验证及分析。

教学内容按照以下进度安排:1. 第1周:信号处理基本概念及信号的采样与恢复;2. 第2周:信号的时域与频域分析;3. 第3周:傅里叶变换及其应用;4. 第4周:滤波器设计;5. 第5-6周:信号处理应用案例分析及小组项目实践。

北京理工大学高级数字信号处理实验报告

北京理工大学高级数字信号处理实验报告

高级数字信号处理实验报告实验名称:基于小波变换的信号去噪实验实验时间: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、掌握信号的MATLAB表示及其可视化方法。

2、掌握信号基本时域运算的MATLAB实现方法。

3、利用MATLAB分析常用信号,加深对信号时域的理解。

二、实验原理1、连续时间的MATLAB表示连续时间信号指的是在连续时间范围内有定义的信号,即除若干个不连续点外,在任何信号都有意义。

在MATLAB中,连续时间信号可以用两种方法来表示,即向量表示法和符号对象表示法。

向量表示法:严格意义上来说,MATLAB并不能处理连续时间信号,都必须是用信号等时间间隔采样后的采样值来近似表示的,采样时间间隔足够小的时候,这些采样值就可以近似地表示出连续时间信号。

例如:>>t=0:0.01:10;>>x=sin(t);此时利用plot(t,x)命令即可绘制上述信号的时域波形。

符号对象表示法:连续时间信号先用表达式表示出来,然后采用符号表达式来表示信号。

例如:>>sym t;>>x=xin(t);此时利用ezplot(x)命令即可绘制上述信号的时域波形。

常用的信号产生函数:2、连续时间信号的时域运算对连续时间信号的运算包括量信号想家、相乘、微分、积分以及位移反转、尺度变换(尺度伸缩)等1)相加和相乘信号的相加和相乘指两个信号对应时刻的值相加和相乘,对于两个采用向量表示的可以直接使用算术运算的运算符“+”和“•”来计算,此时要求表示两信号的向量时间范围和采样间隔相同,采用符号对象表示的两个信号,可以直接根据符号对象的运算规则运算。

2)微分和积分对于向量表示发表示的连续时间信号,可以用过数值计算的方法计算信号的微分和积分。

这里由时间向量[t1,t2,…,t N]和采样值向量[x1,x2,…,x N]表示的连续信号的微分是利用差分来近似求取的。

MATLAB里用diff来计算差分x(k+1)-x(k)。

连续信号的定积分可以由MATLAB的quad函数实现,调用格式为quad(‘functions_name’,a,b)其中,functions_name为被积函数名,a、b为积分区间。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

本科实验报告实验名称:数字信号处理实验实验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 k x 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、利用DFT 分析连续时间信号的频谱采用计算机分析连续时间信号的频谱,第一步就是把连续时间信号离散化,这里需要进行连个操作:一是采样,二是截断。

对于连续非周期信号()x t α,按采样间隔T 进行采样,截取长度为M ,那么1()()()(25)M j tj nTn X j x t edt T x nT e ααα-+∞-Ω-Ω-∞=Ω==-∑⎰对()X j αΩ进行N 点的频率采样,得到2120()|()()(26)M jkn NM kn NTX j T x nT eTX k παπα--Ω==Ω==-∑因此,可以将利用DFT 分析连续非周期信号频谱的步骤归纳如下: (1)确定时域采样间隔T ,得到离散序列()x n ; (2)确定截取长度M ,得到M 点离散序列()()()M x n x n w n =,这里的()w n 为窗函数。

(3)确定频域采样点数N ,要求NM ≥。

(4)利用FFT 计算离散序列的N 点DFT ,得到()M X k 。

(5)根据式(2-6)由()M X k 计算()X j αΩ采样点的近似值。

采用上诉方法计算的频谱,需要注意如下三点问题:(1)频谱混叠。

如果不满足采样定理的条件,频谱会很出现混叠误差。

对于频谱无限宽的信号,应考虑覆盖大部分主要频率的范围。

(2)栅栏效应和频谱分辨率。

使用DFT 计算频谱,得到的结果只是N 个频谱样本值,样本值之间的频谱是未知的,就像通过一个栅栏观察频谱,称为“栅栏效应”。

频谱分辨率与记录长度成正比,提高频谱分辨率,就要增加记录时间。

(3)频谱泄露。

对于信号截断会把窗函数的频谱会引入到信号频谱中,造成频谱泄露。

解决这问题的主要办法是采用旁瓣小的窗函数,频谱泄露和窗函数均会引起误差。

因此,要合理选取采样间隔和截取长度,必要时还需考虑适当的窗。

对于连续周期信号,我们在采用计算机进行计算时,也总是要进行截断,序列总是有限长的,仍然可以采用上诉方法近似计算。

4、可能用到MATLAB 函数与代码实验中的DFT 运算可以采用MATLAB 中提供的FFT 来实现。

DTFT 可以利用MATLAB 矩阵运算的方法进行计算。

三、实验题目1. (){2,1,1,1}x n =-,完成如下要求:(1)计算其DTFT ,并画出[,]ππ-区间的波形。

(2)计算4 点DFT ,并把结果显示在(1)所画的图形中。

(3)对()x n 补零,计算64 点DFT ,并显示结果。

(4)是否可以由DFT 计算DTFT ,如果可以,请编程实现。

2. 考察序列()cos(0.48)cos(0.52)x n n n ππ=+(1)010n ≤≤时,用DFT 估计()x n 的频谱;将()x n 补零加长到长度为100点序列用DFT 估计()x n 的频谱。

要求画出相应波形。

(2)0100n ≤≤时,用DFT 估计x(n)的频谱,并画出波形。

3. 已知信号123()0.15sin(2)sin(2)0.1sin(2)x t f t f t f t πππ=+- ,其中11f Hz =,22f Hz =,33f Hz =。

从()x t 的表达式可以看出,它包含三个频率的正弦波,但是,从其时域波形来看,似乎是一个正弦信号,利用DFT 做频谱分析,确定适合的参数,使得到的频谱的频率分辨率符合需要。

4.利用DFT 近似分析连续时间信号x (t )=e −0.1t u(t)的频谱(幅度谱)。

分析采用不同的采样间隔和截取长度进行计算的结果,并最终确定合适的参数。

四、实验代码、实验结果及分析1. (1) >> n=0:3;>> x=[2 -1 1 1]; >> w=-pi:0.01*pi:pi; >> X=x*exp(-j*n'*w); >> subplot(211); >> plot(w,abs(X));>> xlabel('\Omega/\pi');>> title('Magnitude');>> axis tight;>> subplot(212);>> plot(w,angle(X));>> xlabel('\Omega/\pi');>> title('Phase');>> axis tight;(2)>> Xk=fft(x);>> subplot(211);>> hold on;>> stem(2*pi/4*n,abs(Xk),'filled'); >> subplot(212);>> hold on;>> stem(2*pi/4*n,angle(Xk),'filled');(3)>> x=[2 -1 1 1 zeros(1,60)]; >> n=0:63;>> Xk=fft(x);>> subplot(211);>> stem(n,abs(Xk),'filled'); >> xlabel('\Omega/\pi'); >> title('Magnitude');>> axis tight;>> subplot(212);>> stem(n,angle(Xk),'filled'); >> xlabel('\Omega/\pi'); >> title('Phase');>> axis tight;(4)可以由DFT计算DTFT,只需采样点足够即可逼近DTFT,可采用增加补零个数的方法实现。

2.(1)>> n=0:10;>> x=cos(0.48*pi*n)+cos(0.52*pi*n);>> Xk=fft(x);>> subplot(211);>> stem(n,abs(Xk),'filled');>> xlabel('\Omega');>> title('Magnitude');>> n1=0:99;>> x1=[x zeros(1,89)];>> Xk1=fft(x1);>> subplot(212);>> stem(n,abs(Xk1),'filled');>> xlabel('\Omega');>> title('Magnitude');>> n=0:10;>> x=cos(0.48*pi*n)+cos(0.52*pi*n); >> Xk1=fft(x);>> subplot(211);>> stem(n,angle(Xk),'filled');>> xlabel('\Omega');>> title('Phase');>> n1=0:99;>> x1=[x zeros(1,89)];>> Xk1=fft(x1);>> subplot(212);>> stem(n1,angle(Xk1),'filled');>> xlabel('\Omega');>> title('Phase');(2)(3)可通过增大采样点数,时域补零提高频谱分辨率。

3.>> n=0:20;>> x=0.15*sin(2*pi*n)+sin(2*pi*2*n)-0.1*sin(2*pi*3*n); >> Xk=fft(x);>> subplot(211);>> stem(n,abs(Xk),'filled');>> xlabel('\Omega');>> title('Magnitude');>> subplot(212);>> stem(n,angle(Xk),'filled');>> xlabel('\Omega');>> title('Phase');4.【修改采样间隔】>> n=0:10;>> x=exp(-0.1*n).*heaviside(n);>> Xk=fft(x);>> stem(n,abs(Xk),'filled');>> n=0:50;>> x=exp(-0.1*n).*heaviside(n); >> Xk=fft(x);>> stem(n,abs(Xk),'filled');>> n=0:100;>> x=exp(-0.1*n).*heaviside(n); >> Xk=fft(x);>> stem(n,abs(Xk),'filled');【修改截取长度】>> n=0:100;>> x=exp(-0.1*n).*(heaviside(n)-heaviside(n-50)); >> Xk=fft(x);>> stem(n,abs(Xk),'filled');>> n=0:100;>> x=exp(-0.1*n).*(heaviside(n)-heaviside(n-10)); >> Xk=fft(x);>> stem(n,abs(Xk),'filled');五、实验总结第一次数字信号处理实验,我了解了如何在MATLAB中使用DFT分析信号的频谱,对DFT 采样、截取的概念和操作结果有了更直观的认识。

相关文档
最新文档