北京理工大学数字信号处理1 DFT

合集下载

数字信号处理核心算法原理:zt、dtft、dft和fft算法原理

数字信号处理核心算法原理:zt、dtft、dft和fft算法原理

数字信号处理核心算法原理:zt、dtft、dft和fft算法原理数字信号处理中常用的核心算法包括zt、dtft、dft和fft算法。

以下是它们的算法原理:1. zt(Short-time Fourier Transform,短时限傅里叶变换)zt算法主要用于对信号进行频域分析和滤波。

它通过对信号进行快速傅里叶变换(FFT),将信号在时域上的表示转化为频域上的表示。

具体来说,zt算法将输入信号分解成一组基带频率,然后对每个频率进行短时傅里叶变换,得到该频率的上采样频谱。

接着,将上采样频谱进行再次短时傅里叶变换,得到更采样频率的频谱,从而得到重构的基带信号。

2. dtft(Deep Short-time Fourier Transform,Deep FFT,深层FFT)dtft算法是zt算法的深层应用,它可以将zt算法得到的频域信号进一步转化为时域信号。

具体来说,dtft算法首先使用zt算法得到的基带频率进行短时傅里叶变换,得到重构的基带信号。

然后,对重构的基带信号进行进一步短时傅里叶变换,得到时域信号。

3. dft(Double Short-time Fourier Transform,Double FFT,双频FFT)dft算法与dtft算法类似,但它能够处理双频信号。

具体来说,dft算法先使用zt算法得到的基带频率进行短时傅里叶变换,得到重构的基带信号。

然后,对重构的基带信号进行同时的短时傅里叶变换,得到同时得到的两个频率的频谱。

接着,将两个频率的频谱进行再次短时傅里叶变换,得到同时重构的基带信号和两个频率的时域信号。

4. fft(fast Fourier Transform,快速傅里叶变换)fft算法是对信号进行时域分析的一种常用算法。

它通过对信号进行快速傅里叶变换(FFT),将信号在时域上的表示转化为频域上的表示。

具体来说,fft算法将输入信号分解成一组基带频率,然后对每个频率进行短时傅里叶变换,得到该频率的上采样频谱。

《数字信号处理》王世一版北京理工大学出版社部分习题答案【khdaw_lxywyl】[1]

《数字信号处理》王世一版北京理工大学出版社部分习题答案【khdaw_lxywyl】[1]

w.
ww
我们希望找到如下一个取样 于单位圆上 10 个等间隔点的 X ( z ) 的取样。
的周期性序列 . 试用

N −1


n =0
% (n)W kn = % (n)W kn / 2 + x ∑x 2N N
n =0
N −1
2 N −1 n= N
% (n)W kn / 2 ∑x N
N −1
N −1
= (1 + e
− jkπ
% (n)W kn / 2 )∑ x N
n =0
N −1
⎛k⎞ = (1 + e − jkπ ) X 1 ⎜ ⎟ ⎝2⎠

(b) 求这个系统的单位取样响应。 (c) 读者会发现它是一个不稳定系统,求满足上述差分方程的一个稳定(但非因果)系统的单位取样响应。 解:
由于 H ( z ) 的收敛域不包括单位圆,所以这是个不稳定系统 c)若要使系统稳定,则其收敛域应包括单位圆,则选 H ( z ) 的收敛域为 0.62 <
kh da w. co m
n =0
1 ⎛ ⎞ H D (e jω ) = c ⎜ − aT −2 aT ⎟ ⎝ 1 − 2e cos ω + e ⎠

1− e
(a) 试求模拟滤波器的频率响应,并会出其振幅特性略图
kh da w. co m
1 a + jΩ
e j 3ω − e − j 4ω 1− e jω
案 网
c
− aT − jω
w.

QZ = a −2 − 2a −1 cos ω + 1 = 1/ a a 2 − 2a cos ω + 1

数字信号处理讲义-DFT

数字信号处理讲义-DFT

2021/3/18
18
x [ k ] c2 o π r/s N k )(, N 1 ,r 6 4
利用MATLAB计算16点序列x[k]的512点DFT
N = 16;
k = 0:N-1;
L = 0:511;
8
M ag nitu de
x = cos(2*pi*k*4./16);
X = fft(x);
20XX年复习资料
大学复习资料
专 业: 班 级: 科目老师: 日 期:
离散傅里叶变换(DFT)
有限长序列的傅里叶分析 离散傅里叶变换的性质 利用DFT计算线性卷积 利用DFT分析信号的频谱
2021/3/18
2
有限长序列的傅里叶分析
四种信号傅里叶表示 有限长序列离散傅里叶变换 DFT矩阵表示 利用MATLAB计算DFT
X[0] X[1]
W W4400
W40 W41
W40 W42
W W4403xx[[10]]
X[2] X[3]
W W4400
W42 W43
W44 W46
W W4496xx[[23]]
X[0] 1 1 1 1 1 2
X[1]1 j 1
j
1
2
X[2] 1 1 1 11 2
X[3] 1
j
1
j
1
2
2021/3/18 X[m]={2,2,2,2}, m=0,1,2,3
15
DFT矩阵表示
DFT矩阵形式为 XDNx
其中 X X [ 0 ]X [ 1 ] X [ N 1 ] T ,
x x [ 0 ]x [ 1 ] x [ N 1 ] T ,
1
1
DN

数字信号处理课件第3章 DFT 变换

数字信号处理课件第3章 DFT 变换

18
二. DFT的隐含周期性
在第一节中,DFT和IDFT只定义了X(k)和x(n)在变换区间 上的N个值。如果使DFT中k的取值域为[-∞,∞],就会发现 X(k)是以N为周期的,即 X(k + mN) = X(k) 称X(k)的这一特性为DFT的隐含周期性。

物理意义:X(k)为 X (e j ) 在区间 [0, 2 ] 上的N点等间隔采样。 X (e j ) 以2π为周期,X(k)以N为周期。
3
x ( n) X ( k )
解答两个疑问
1.用DFT干什么? 用数字计算机来计算信号的傅里叶变换。具有重要 的理论意义和应用价值,是本课程学习的一大重点。
x ( n ) X ( e j )
2.为什么不用DTFT计算信号的傅里叶变换? DTFT计算得到的频谱是连续的,无法用有限个数 字存储器存储。因此DTFT是理论上的频谱分析方法, 可以用来对离散信号和系统的频谱特征进行理论分 析,指导具体的数字信号处理系统(如数字滤波器) 的设计,但不具有可实际应用性。
1
2
3
四.循环卷积定理
1、循环卷积的定义 2、循环卷积的求解 3、循环卷积定理 4、循环卷积与线性卷积 5、实际问题
24
1、循环卷积的定义
x1 (n) N1点;x2 (n) N 2点;N max( N1 , N 2 ).
x1 (n) N x2 ( n)
m 0
x (m) x ((n m))
30
x1 (n), x2 (n)如图,求y (n) x1 (n) 例:
解:
x1m
6 x2 ( n )
6 5 4 3 2 1 01 2 3 4 5
17
3.2 离散傅里叶变换的基本性质

数字信号处理:离散傅里叶变换(DFT)

数字信号处理:离散傅里叶变换(DFT)

X (k ) XX((kkX)))X(XX(z(ez(zzjjjj))))222kk,,k, 200k0,kkkNN--1N1-1 0((33..1(1.3.44.)1k).4) NNN N
2021/8/24
6
3.1 离散傅里叶变换的定义
DFT的物理意义:
(1)x(n)的N点DFT 是x(n)的Z变换在单位
。 j 2 kn 8
解: (1) 设变换区间N=8, 则:n0
N 0
XX(k(k)
77
)
nn00
xx(Xn(n)W()Wk8k)8nkn 3373 eexj 28j(28knnkn)We8jk83nk NnN000
sin(3 k 2 sin kn
80,1,
,
7
(2) 设变换区间N=16, 则 2 k 8
设序列x(n)的长度为N, 其Z变换和DFT分别为:
N 1
X (z) ZT[x(n)] x(n)zn
n0
N 1
X (k) DFT[x(n)] x(n)WNkn
n0
0 k N-1
X (比k较) 上XXX面(((kkkX)二))式X(XX(z(可z(z)z)))得zzzezej2关jeN2Njk2Nke,系k,j,2N式 k00,0kkkNN--N11-10 ((33k..1(1.3.33.)1).3)N
(
j2 k
X
(k)
X(k)
DFT
[=x(Xn~ ()k]
)RNDD(nFF)ST[n[x~x(0~n()n] )RNnN01(n
[0, 2]上的N点
单位圆上的N
等间隔采样
DFT
点等间隔采样
~
X (k ) DFFTT [ x(n)] ZT DFT [x(n)RN (n)] X

数字信号处理实验DFT

数字信号处理实验DFT

数字信号处理实验(第七章DFT)一、实验内容利用DFT对信号(如由多个正弦信号组成的信号)进行频谱分析,并研究不同数据长度,补零,加窗等对频率分辨率的影响。

二、实验工具MATLAB2012b软件三、实验涉及知识1.加窗:通常情况下,信号都是无限长的。

而在运用计算机进行模拟时,这是无法操作的。

所以实际情况下,要把观测的信号限制在一定长的时间之内。

为了从无限长的信号中得到有限长的数据,在时域乘一个窗函数,将信号截短,叫做加窗。

2.补零:为了增加频域抽样点数N,在不改变时域数据的情况下,在时域数据末端加一些零值点,叫做补零。

3.频率分辨率:指对两个最近的频谱峰值能够分辨的能力。

四、实验设计思路实验要求是利用DFT进行频谱分析,并研究不同数据长度,补零,加窗等对频率分辨率的影响。

我们利用DFT计算频谱的目的在于,针对计算机只能计算有限个离散的点的取值这一特点,实现计算机对连续时间信号的频谱的模拟。

所以我们比较关心的是模拟频谱和原信号频谱的拟合程度,我们希望拟合程度越高越好。

这就需要增加频率分辨率,因为频率分辨率越高,根据公式,说明相同采样频率下,采样的长度就越长,也就是频谱采样的点数就越多,我们可以看到的模拟频谱图像就越清晰,这样与原信号的拟合程度就越好。

根据实验要求,我将实验定为五部分,用4个m文件分别研究不同数据长度,补零,加窗,采样频率对频率分辨率的影响。

在程序设计中,出现的一个问题是,如何计算DFT后的频域函数的值。

课堂用的参考书上曾经给出一个将DFT转换为矩阵运算的方法,查阅相关参考书后,我发现在MATLAB信号处理工具箱中自带了一个dftmtx的函数,这个函数的功能是可以计算出旋转因子,计算出旋转因子后再将时域函数也转换成矩阵的形式进行DFT就可以了。

这里说明一下,由于dftmtx这个函数默认取值间隔为1,所以在没有特意设定采样频率的值得情况下,我们将采样频率默认为 1 。

实验设计中,为了更好的理解频率分辨率的概念,我不仅采用了绘图的形式,还直接计算了频率的分辨率,从而更直观的得到频率分辨率的具体数值。

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

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

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

数字信号处理DFT实验报告

数字信号处理DFT实验报告
实验设备
MATLAB软件
实验原理
有限长序列的傅里叶变换(DFT)和逆变换(IDFT)
其中
实验步骤
实验一:离散信号的频谱分析
假设信号x(n) = 0.08*cos(0.45nπ)+ sin(0.3nπ)
这个信号有两根谱线,0.3pi 和 0.45pi,请选择合适的长度N=120,用DFT分析其频谱。
实验二:周期信号的频谱分析
下面给出一周期“方波”序列:
其中,m = 0,±1,±2,…,N是基本周期,L/N是占空比。
A)分别画出当L = 10,N = 60;L = 20,N = 60时x(n)的波形和频谱分布。
B)对所得结果进行讨论。
实验结果
实验一:离散信号的频谱分析
实验二:周期信号的频谱分析
实验日期11.18同组人贾生.叶生实验学时3
实验类型
综合型
实验名称
离散傅里叶变换(DFT)
实验目的
(1)加深对离傅里叶变换(DFT)基本概念的理解。
(2)了解有限长序列傅里叶变换(DFT)与周期序列傅里叶级数(DFS)、离散时间傅里叶变换(DTFT)的联系。
(3)掌握用MATLAB语言进行离散傅里叶变换和逆变换的方法。

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

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

实验一基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 算法。

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

数字信号处理课件第4章离散傅里叶变换1DFT的定义和物理意义

数字信号处理课件第4章离散傅里叶变换1DFT的定义和物理意义
1、在忽略舍入误差时,IDFT能准确 地恢复DFT窗内的原采样信号;
2、IDFT的采样值与原采样信号窗外 的部分无关;
3、IDFT可以唯一确定原序列。
【随堂练习】 1.求下列序列的N点DFT (1) x(n) (n) (2) x(n) (n n0 ) 0 n0 N (3) x(n) an 0 n N (4) x(n) u(n) u(n n0 ) 0 n0 N
回到第3章的周期序列的DTFT:
~x (n) 的离散傅里叶级数
X~(k)
N 1 ~x (n)WNkn
N 1
x((n)) N WNkn
N 1
x(n)WNkn
n0
n0
n0
~x(n)
1 N
N 1 X~ (k )WNkn
k 0
1 N
N 1
X (k )WNkn
k 0
N点DFT:X
(k)
N 1
j2 kn
解: N1 X (k) x(n)WNkn n0
121 1 [e
j n 6
e
j n 6
j2 kn
]e 12
n0 2
1
121
[e
j 2 (k 1)n 12
j 2 (k 1)n
e 12 ]
2 n0
121 j2 (k1)n 121 j2 (k1)n
1[ e e ] 12
12
2 n0
n0
k)
sin( k)
8
X
(e
j
)
e
j 3 2
sin(2) sin(1 )
2
3、求x(n)的16点DFT,N=16
X (k) X (e j ) 2 k 16
X

数字信号处理实验五用DFT(FFT)对信号进行频谱分析

数字信号处理实验五用DFT(FFT)对信号进行频谱分析

开课学院及实验室:电子楼3172018年 4月 29 日3()x n :用14()()x n R n =以8为周期进行周期性延拓形成地周期序列.(1> 分别以变换区间N =8,16,32,对14()()x n R n =进行DFT(FFT>,画出相应地幅频特性曲线;(2> 分别以变换区间N =4,8,16,对x 2(n >分别进行DFT(FFT>,画出相应地幅频特性曲线; (3> 对x 3(n >进行频谱分析,并选择变换区间,画出幅频特性曲线.<二)连续信号 1. 实验信号:1()()x t R t τ=选择 1.5ms τ=,式中()R t τ地波形以及幅度特性如图7.1所示.2()sin(2/8)x t ft ππ=+式中频率f 自己选择.3()cos8cos16cos 20x t t t t πππ=++2. 分别对三种模拟信号选择采样频率和采样点数.对1()x t ()R t τ=,选择采样频率4s f kHz =,8kHz ,16kHz ,采样点数用τ.s f 计算.对2()sin(2/8)x t ft ππ=+,周期1/T f =,频率f 自己选择,采样频率4s f f =,观测时间0.5p T T =,T ,2T ,采样点数用p s T f 计算.图5.1 R(t>地波形及其幅度特性对3()cos8cos16cos 20x t t t t πππ=++,选择采用频率64s f Hz =,采样点数为16,32,64. 3. 分别对它们转换成序列,按顺序用123(),(),()x n x n x n 表示.4. 分别对它们进行FFT.如果采样点数不满足2地整数幂,可以通过序列尾部加0满足.5. 计算幅度特性并进行打印.五、实验过程原始记录<数据、图表、计算等)(一> 离散信号%14()()x n R n = n=0:1:10。

1的dft变换结果

1的dft变换结果

1的dft变换结果
DFT(离散傅里叶变换)是一种在数字信号处理中常用的数学工具,用于将时域信号转换为频域信号。

具体来说,对于一个实数序列 x[n],其DFT的变换结果可以表示为一个复数序列 X[k],其中k是离散频率索引,n是时间索引。

DFT变换的结果X[k]可以通过以下公式计算:
X[k] = ∑_{n=0}^{N-1} x[n] W_N^k n
其中,W_N是N次单位根,即exp(-2πi/N),n是时间索引,N是序列长度。

对于长度为N=1的序列,即只有一个点的序列 x[n],其DFT的结果是一个复数,这个复数的实部和虚部都是0。

也就是说,一个点的序列经过DFT变换后得到的结果是0。

这是因为傅里叶变换的基础是无穷周期序列,一个点无法构成一个周期,因此其傅里叶变换结果为0。

以上内容仅供参考,如需更多信息,建议查阅数字信号处理相关书籍或咨询该领域专业人士。

数字信号处理--实验五-用DFT(FFT)对信号进行频谱分析

数字信号处理--实验五-用DFT(FFT)对信号进行频谱分析

学生实验报告开课学院及实验室:电子楼3172013年4月29日、实验目的学习DFT 的基本性质及对时域离散信号进行频谱分析的方法,进一步加深对频域概念和数字频率的理解,掌握 MATLAB 函数中FFT 函数的应用。

二、实验原理离散傅里叶变换(DFT)对有限长时域离散信号的频谱进行等间隔采样,频域函数被离散化了, 便于信号的计算机处理。

设x(n)是一个长度为 M 的有限长序列,x(n)的N 点傅立叶变换:X(k)N 1j 三 knDFT[x(n)]N x(n)e N0 k N 1n 0其中WNe.2 jN,它的反变换定义为:1X(n)NkN 1nkX(k)W N0 令z W N k,X(zz WN k则有:N 1x( n)Wj kn 0可以得到,X(k)X(Z)Z WN kZ W N*是Z 平面单位圆上幅角为2kN 的点,就是将单位圆进行N 等分以后第 K 个点。

所以, X(K)是Z 变换在单位圆上的等距采样,或者说是序列傅立叶变换的等距采样。

时域采样在满足Nyquist 定理时,就不会发生频谱混叠。

DFT 是对序列傅立叶变换的等距采样,因此可以用于序列的频谱分析。

如果用FFT 对模拟信号进行谱分析,首先要把模拟信号转换成数字信号,转换时要求知道模拟 信号的最高截至频率,以便选择满足采样定理的采样频率。

般选择采样频率是模拟信号中最高频率的3~4倍。

另外要选择对模拟信号的观测时间,如果采样频率和观测时间确定,则采样点数也确定 了。

这里观测时间和对模拟信号进行谱分析的分辨率有关,最小的观测时间和分辨率成倒数关系。

最小的采样点数用教材相关公式确定。

要求选择的采样点数和观测时间大于它的最小值。

如果要进行谱分析的模拟信号是周期信号,最好选择观测时间是信号周期的整数倍。

如果不知道■ 厂1*1IE向i1A I1f Ii i 0r 1 疋0Jfb-4W0 70000图5.1 R(t)的波形及其幅度特性xn=[on es(1,4),zeros(1,7)];%输入时域序列向量 xn=R4( n)%计算xn 的8点DFTXk16=fft(x n,16);%计算xn 的16点DFTXk32=fft(x n,32); %计算xn 的32点DFTk=0:7;wk=2*k/8;对 x 3(t) cos8 t cos16 t cos20 t ,选择采用频率 f s 64Hz ,采样点数为 16 , 32 , 64。

数字信号处理第三章离散傅里叶变换(DFT)及其快速算法(FFT)

数字信号处理第三章离散傅里叶变换(DFT)及其快速算法(FFT)

周期
2
s、fs N
分辨率
2
N
fs N
返回
回到本节
DFT和DFS之间的关系:
周期延拓
取主值
有限长序列
周期序列
主值区序列
有限长序列 x(n) n 0,1, 2, M 1

周期序列 xN (n) x(n mN ) x((n))N m 0 n0 N 1 n mN n0 ((n))N n0
四种傅立叶变换
离散傅立叶变换(DFT)实现了信号首次在频域 表示的离散化,使得频域也能够用计算机进行处理。 并且这种DFT变换可以有多种实用的快速算法。使信 号处理在时、频域的处理和转换均可离散化和快速 化。因而具有重要的理论意义和应用价值,是本课程 学习的一大重点。
本节主要介绍
3.1.1 DFT定义 3.1.2 DFT与ZT、FT、DFS的关系 3.1.3 DFT的矩阵表示
• X(k)为x(n)的傅立叶变换 X (e j ) 在区间 [0, 2 ]上的N
点等间隔采样。这就是DFT的物理意义。
j ImZ
2பைடு நூலகம்3
4
5 6
1 2
N
k=0 ReZ
7 (N-1)
DFT与z变换
X(ejω)
X(k)
0
o

2
0
N 1 k
DFT与DTFT变换
回到本节
变量

、f k
之间的某种变换关系.
• 所以“时间”或“频率”取连续还是离 散值,就形成各种不同形式的傅里叶变换 对。
3.1 离散傅里叶变换的定义及物理意义
时间域
t:连续
模拟域

理解DFT如何逼近FT的实例教学法

理解DFT如何逼近FT的实例教学法

理解DFT如何逼近FT的实例教学法徐友根;彭开南;郑一鸣【摘要】本文结合一个离散傅里叶变换DFT计算实例,分析了DFT与连续时间傅里叶变换FT之间的联系,以较为直观的方式阐述了由FT到DFT的演变过程,以及该过程关键环节对最终结果的影响,主要包括谱泄漏,折叠效应,栅栏效应以及谱折移等.教学实践表明,通过该实例讲述DFT对FT的逼近问题,能有效加深学生对DFT 的认识和理解.【期刊名称】《电气电子教学学报》【年(卷),期】2017(039)005【总页数】3页(P76-77,111)【关键词】数字信号处理;傅里叶变换;离散傅里叶变换【作者】徐友根;彭开南;郑一鸣【作者单位】北京理工大学信息与电子学院,北京 100081;北京理工大学信息与电子学院,北京 100081;北京理工大学信息与电子学院,北京 100081【正文语种】中文【中图分类】TN913离散傅里叶变换DFT作为有限长序列的一种频域表示法,在理论上有着重要的作用。

由于其存在快速计算方法—快速傅里叶变换FFT,因而在数字信号处理中也有着重要的作用。

现有数字信号处理教材在引入DFT概念时,一般从连续非周期信号的傅立叶变换FT出发,将信号时域采样,从而FT转化为离散时间傅里叶变换DTFT。

然后将信号的频谱采样,得到离散傅立叶级数DFS的公式。

再将时域和频域上各取一个主值区间就形成了DFT。

这一过程中存在四种变化需要注意,也即截断效应(谱泄漏),折叠效应,栅栏效应以及谱折移[1,2]。

根据笔者的教学体会,很多学生虽然应用DFT公式计算相当熟练,但对DFT概念的来龙去脉未必清楚,对上述四种变化引出的误差也缺乏直观认识。

本文通过DFT计算实例,对由FT到DFT的演变过程作了简单而系统的阐述,将其引入到教学中,讲授DFT对FT的逼近问题能加深学生对DFT概念的理解和掌握。

图1所示为DFT逼近FT的详细过程。

考虑下述DFT计算实例:对模拟信号xa(t)=-0.5+cos2(200πt)以一定的采样率进行采样,得到一个 256点数字序列,记作x(n),其中n=0~255。

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

数字信号处理
第三章离散傅里叶变换DFT
班级:05941401
姓名:张xx
学号:******xxxx
一、实验要求
利用DFT对信号(如由多个正弦信号组成的信号)进行频谱分析,并研究不同数据长度,补零,加窗等对频率分辨率的影响。

二、名词解释
1.补零:在时域信号末端加一些零值点,以增加频域采样点数。

2.加窗:计算机不能对无限长的信号进行测量和运算,需要从信号中截取一个时间片段,然后用截取的信号时间片段进行周期延拓处理,得到虚拟的无限长的信号,然后就可以对信号进行傅里叶变换、相关分析等数学处理。

3.频率分辨率:指将两个相邻谱峰分开的能力。

三、实验内容及步骤
1.不同数据长度对频率分辨率的影响
(1)实验方法:
由于Matlab中没有dtf函数,所以新建一个m文件,根据已知DFT公式,定义一个dft函数。

然后设定采样长度分别为N=10和N=50,对同一个信号进行采样,并用matlab 绘制其时域序列图、幅频特性曲线、频域序列图。

比较两者的最小频率间隔,从而比较频率分辨率。

(2)Matlab代码

N=10;
n=0:1:N-1;
xn=sin(5*2*pi*n/30)+cos(3*2*pi*n/30);
Xk=dft(xn,N);
subplot(3,1,1)
stem(n,xn,'filled');
title('xn');
xlabel('n');
axis([0,10,-2.5,2.5]);
w=2*pi*(0:1:2047)/2048;
Xw=xn*exp(-j*n'*w);
subplot(3,1,2);
plot(w/pi,abs(Xw));
title('X(ejw)');
xlabel('w');
axis([0,1,0,10]);
subplot(3,1,3)
k1=0:1:9;w1=2*pi/10*k1;
stem(w1/pi,abs(Xk),'filled');
title('Xk');
xlabel('pi');
axis([0,1,0,10]);

N=50;
n=0:1:N-1;
xn=sin(5*2*pi*n/30)+cos(3*2*pi*n/30); Xk=dft(xn,N);
subplot(3,1,1)
stem(n,xn,'filled');
title('xn');
xlabel('n');
axis([0,10,-2.5,2.5]);
w=2*pi*(0:1:2047)/2048;
Xw=xn*exp(-j*n'*w);
subplot(3,1,2);
plot(w/pi,abs(Xw));
title('X(ejw)');
xlabel('w');
axis([0,1,0,30]);
subplot(3,1,3)
k1=0:1:49;w1=2*pi/50*k1;
stem(w1/pi,abs(Xk),'filled');
title('Xk');
xlabel('pi');
axis([0,1,0,30]);
(3)实验结果
N=10
N=50
(4)结论与分析
结论:数据长度越长,频率分辨率越高。

分析:根据公式,其中N为采样点数,为采样频率,为采
样间隔。

因此,T为数据长度,最小频率间隔与数据长度成反比;最小频率间隔越小,频率分辨率越高。

2.补零对频率分辨率的影响
(1)实验方法:
对上一实验中的相同信号进行补零至100位,仍然取N=10,模拟出其时域序列图、幅频特性曲线、频域序列图。

(2)Matlab程序:
N=10;
n=0:N-1;
xn=sin(5*2*pi*n/30)+cos(3*2*pi*n/30);
N1=100; n1=0:N1-1;
x1=[xn(1:10) zeros(1,90)];
subplot(3,1,1)
stem(n1,x1,'filled');
title('x1');
xlabel('n');
axis([0,20,-2.5,2.5]);
w=2*pi*(0:2047)/2048;
X1=x1*exp(-j*n1'*w);
subplot(3,1,2);
plot(w/pi,abs(X1));
title('X(ejw)');
xlabel('w');
axis([0,1,0,10]);
subplot(3,1,3)
Xk=dft(x1,N1);
k1=0:1:49;
w1=2*pi/100*k1;
stem(w1/pi,abs(Xk(1:1:50)),'filled');
title('Xk');
xlabel('pi');
axis([0,1,0,10]);
(3)实验结果:
(4)结论与分析
补零对频率分辨率没有影响。

因为补零是在信号时域上进行的活动,信号的有效长度没有改变,所以频谱也没有变化,因而不能提高频率分辨率。

3.加窗对频率分辨率的影响
(1)实验方法:
设定采样长度N=50,对同一信号进行采样,采用加窗的方法对时域图像进行采样,模拟出时域序列图、幅频特性曲线和频域序列图。

这里要注意的是我们采用加窗的方法时,设定信号的长度为400,然后对长度为400的信号进行截短加窗,这时只有加窗处我们是对信号采样的,即得到的信号是有效的,其余位置信号都为0。

(2)Matlab代码:
N=50;
n=0:N-1;
xn=sin(5*2*pi*n/30)+cos(3*2*pi*n/30);
N2=400;n2=1:400;
x1=(sin(n2*5*2*pi/30)+cos(n2*3*2*pi/30)).*(heaviside(n2)-heaviside(n2-N+1)); subplot(3,1,1)
stem(n2,x1,'filled');
title('x1');
xlabel('n');
axis([0,10,-2.5,2.5]);
w=2*pi*(0:2047)/2048;
X1=x1*exp(-j*n2'*w);
subplot(3,1,2);
plot(w/pi,abs(X1));
title('X(ejw)');
xlabel('w');
axis([0,1,0,30]);
subplot(3,1,3)
Xk=dft(x1,N2);
k1=0:1:399;
w1=2*pi/400*k1;
stem(w1/pi,abs(Xk),'filled');
title('Xk');
xlabel('pi');
axis([0,1,0,30]);
(3)实验结果:
(4)结论与分析:
通过比较上面的图形和实验1中的N=50的频域图像,可以看出频谱有轻微的失真。

这是因为加窗是在时域上对原信号乘一个窗函数,相当于频域上两者卷积。

导致了一定程度的谱线展宽,因而发生了频谱泄露,同时降低了频率分辨率。

相关文档
最新文档