MATLAB的离散傅里叶变换的仿真

合集下载

实验用MATLAB计算傅里叶变换

实验用MATLAB计算傅里叶变换

实验二 用MATLAB 计算傅立叶变换(2课时)一、实验目的1、掌握用MA TLAB 计算DTFT 及系统频率响应的方法。

2、掌握用MA TLAB 计算DFT 和IDFT 的方法。

3、掌握用DFT 计算圆周卷积和线性卷积的方法。

二、实验设备计算机一台,装有MATLAB 软件。

三、实验原理和基本操作1.用MA TLAB 计算DTFT对于序列x (n ),其离散时间傅立叶变换(DTFT )定义为:∑∞-∞=-=n n j e n x j X ωω)()( (1)序列的傅立叶变换(DTFT )在频域是连续的,并且以ω=2π为周期。

因此只需要知道jw X(e )的一个周期,即ω=[0,2π],或[-π,π]。

就可以分析序列的频谱。

用MA TLAB 计算DTFT ,必须在-π≤ω≤π范围内,把ω用很密的、长度很长的向量来近似,该向量中各个值可用下式表示: w=k*dw=k*K π2 (2) 其中:d ω=Kπ2 称为频率分辨率。

它表示把数字频率的范围2π均分成K 份后,每一份的大小,k 是表示频率序数的整数向量,简称为频序向量,它的取值可以有几种方法:通常在DTFT 中,频率取-π≤ω<л的范围,当K 为偶数时,取 k 12,,1,0,1,,12,2--+--=K K K 如果K 为奇数,则取 k 5.02,,1,0,1,,5.02--+-=K K 可以为奇偶两种情况综合出一个共同的确定频序向量k 的公式; k=12K -⎢⎥-⎢⎥⎣⎦ :12K -⎢⎥⎢⎥⎣⎦(3) 上式中⎢⎥⎣⎦表示向下取整。

在MA TLAB 中的向下取整函数为floor ,floor (x )的作用是把x 向下(向-∞方向)取整,所以与(3)式等价的MATLAB 语句为 k ))5.02(:)5.02((-+-=K K floor (4) 给定了输入序列(包括序列x 及其位置向量n ),又设定了频率分辨率d ω及频序向量k ,则DTFT 的计算式(1)可以用一个向量与矩阵相乘的运算来实现。

[转载]MATLAB中傅里叶fft函数使用(仿真程序和图形结果)

[转载]MATLAB中傅里叶fft函数使用(仿真程序和图形结果)

[转载]MATLAB中傅⾥叶fft函数使⽤(仿真程序和图形结
果)
原⽂地址:MATLAB中傅⾥叶fft函数使⽤(仿真程序和图形结果)作者:西电⼤宝Chuck
MATLAB中的傅⾥叶变换时是⾮常常⽤的,研究信号处理时不可避免,尤其在频域。

这是⼀个例⼦,使⽤MATLAB时对于信号的采样频率选择很重要,⾸先要满⾜奈奎斯特采样定理,
然后最好选择4倍以上的奶奎斯特采样频率作为fs,这样绘制出的图形和结果才能⽐较精确直观。

N=512;fs=1200;%采样点数和采样频率
n=0:N-1;t=n/fs;%时间序列
y=sin(2*pi*50*t)+sin(2*pi*120*t);%定义⼀个含有50hz和120hz两种频率的信号
Y=fft(y,N);%快速傅⾥叶变换
f=n*fs/N;%频率序列
Y=abs(Y);%求模
plot(f,Y);%绘制信号频域图形
仿真结果:课件两个频率在50和120hz处
推荐⼀⾸歌,我很喜欢 small things,是不是很舒服西电⼤宝。

数字信号处理实验matlab版离散傅里叶级数(DFS)

数字信号处理实验matlab版离散傅里叶级数(DFS)

数字信号处理实验matlab版离散傅⾥叶级数(DFS)实验11 离散傅⾥叶级数(DFS)(完美格式版,本⼈⾃⼰完成,所有语句正确,不排除极个别错误,特别适⽤于⼭⼤,勿⽤冰点等⼯具下载,否则下载之后的word格式会让很多部分格式错误,谢谢)XXXX学号姓名处XXXX⼀、实验⽬的1、加深对离散周期序列傅⾥叶级数(DFS)基本概念的理解。

2、掌握⽤MA TLAB语⾔求解周期序列傅⾥叶级数变换和逆变换的⽅法。

3、观察离散周期序列的重复周期数对频谱特性的影响。

4、了解离散序列的周期卷积及其线性卷积的区别。

⼆、实验内容1、周期序列的离散傅⾥叶级数。

2、周期序列的傅⾥叶级数变换和逆变换。

3、离散傅⾥叶变换和逆变换的通⽤⼦程序。

4、周期重复次数对序列频谱的影响。

5、周期序列的卷积和。

三、实验环境MA TLAB7.0四、实验原理⽤matlab进⾏程序设计,利⽤matlab绘图⼗分⽅便,它既可以绘制各种图形,包括⼆维图形和三位图形,还可以对图像进⾏装饰和控制。

1、周期序列的离散傅⾥叶级数(1)连续性周期信号的傅⾥叶级数对应的第k次谐波分量的系数为⽆穷多。

⽽周期为N 的周期序列,其离散傅⾥叶级数谐波分量的系数只有N个是独⽴的。

(2)周期序列的频谱也是⼀个以N为周期的周期序列。

2、周期序列的傅⾥叶级数变换和逆变换例11-1已知⼀个周期性矩形序列的脉冲宽度占整个周期的1/4,⼀个周期的采样点数为16点,显⽰3个周期的信号序列波形。

要求:(1)⽤傅⾥叶级数求信号的幅度频谱和相位频谱。

(2)求傅⾥叶级数逆变换的图形,与原信号图形进⾏⽐较。

解MA TLAB程序如下:N=16;xn=[ones(1,N/4),zeros(1,3*N/4)];xn=[xn,xn,xn];n=0:3*N-1;k=0:3*N-1;Xk=xn*exp(-j*2*pi/N).^(n'*k); %离散傅⾥叶级数变换 x=(Xk*exp(j*2*pi/N).^(n'*k))/N; %离散傅⾥叶级数逆变换subplot(2,2,1),stem(n,xn);title('x(n)');axis([-1,3*N,1.1*min(xn),1.1*max(xn)]); subplot(2,2,2),stem(n,abs(x)); %显⽰逆变换结果 title('IDFS|X(k)|');axis([-1,3*N,1.1*min(x),1.1*max(x)]); subplot(2,2,3),stem(k,abs(Xk)); %显⽰序列的幅度谱 title('|X(k)|');axis([-1,3*N,1.1*min(abs(Xk)),1.1*max(abs(Xk))]); subplot(2,2,4),stem(k,angle(Xk)); %显⽰序列的相位谱 title('arg|X(k)|');axis([-1,3*N,1.1*min(angle(Xk)), 1.1*max(angle(Xk))]);运⾏结果如图11-1所⽰。

matlab-离散信号傅里叶变换

matlab-离散信号傅里叶变换

1.请用MATLAB编写程序,实现任意两个有限长度序列的卷积和。

要求用图形显示两个序列及卷积结果。

解:y(n)=∑x(i)h(n-i)假设x(n)={1,2,3,4,5}; h(n)={3,6,7,2,1,6}; y(n)=x(n)*h(n)验证:y[n]=[1,12,28,46,65,72,58,32,29,30]【程序】N=5M=6L=N+M-1x=[1,2,3,4,5]h=[3,6,7,2,1,6]y=conv(x,h)nx=0:N-1nh=0:M-1ny=0:L-1subplot(131);stem(nx,x,'*b');xlabel('n');ylabel('x(n)');grid onsubplot(132);stem(nh,h,'*b');xlabel('n');ylabel('h(h)');grid onsubplot(133);stem(ny,y,'*r');xlabel('n');ylabel('y(h)');grid on【运行结果】2.已知两个序列x[n]=cos(n*pi/2), y[n]=e j*pi*n/4x[n],请编写程序绘制X(e jw)和Y(e jw)和幅度和相角,说明它们的频移关系。

–提示:用abs函数求幅度,用angle求相角。

【程序】n=0:15;x=cos(n*pi/2);y=exp(j*pi*n/4).*x;X=fft(x);Y=fft(y);magX=abs(X);angX=angle(X);magY=abs(Y);angY=angle(Y);subplot(221);stem(n,magX,'*r');xlabel('频率');ylabel('幅度');grid on;subplot(222);stem(n,angX,'*b');xlabel('频率');ylabel('相位');grid on;subplot(223);stem(n,magY,'*r');xlabel('频率');ylabel('幅度');grid on;subplot(224);stem(n,angY,'*b');xlabel('频率');ylabel('相位');grid on;【运行结果】【遇到的问题】只有当n=15时幅度值才相等,n取其他值,幅度值有差异。

matlab实现傅里叶变换与反变换、离散余弦变换与反变换

matlab实现傅里叶变换与反变换、离散余弦变换与反变换

matlab实现傅里叶变换与反变换、离散余弦变换与反变换首先,我们需要了解傅里叶变换和离散余弦变换的原理。

傅里叶变换是一种将时域信号转换为频域信号的方法,它可以将任意信号分解为一系列正弦和余弦信号的叠加。

离散余弦变换则是一种将离散信号转换为一组离散余弦信号的方法。

接下来,我们可以使用matlab中的fft函数来实现傅里叶变换和反变换。

具体步骤如下:
1. 定义一个信号向量x,可以使用matlab中的sin、cos、randn 等函数生成。

2. 使用fft函数对信号进行傅里叶变换,得到频域信号向量X。

3. 使用ifft函数对频域信号向量X进行反变换,得到原始信号向量x1。

4. 使用plot函数将原始信号向量x和反变换后的信号向量x1绘制在同一张图上,进行对比。

接下来,我们可以使用matlab中的dct函数来实现离散余弦变换和反变换。

具体步骤如下:
1. 定义一个长度为N的信号向量x,可以使用matlab中的sin、cos、randn等函数生成。

2. 使用dct函数对信号进行离散余弦变换,得到频域信号向量X。

3. 使用idct函数对频域信号向量X进行反变换,得到原始信号向量x1。

4. 使用plot函数将原始信号向量x和反变换后的信号向量x1绘制在同一张图上,进行对比。

通过上述步骤,我们可以使用matlab轻松实现傅里叶变换和离散余弦变换。

这些技术在信号处理、图像处理、音频处理等领域中得到广泛应用,掌握这些技术将有助于我们更好地理解和应用相关领域的算法。

用matlab实现离散傅里叶变换

用matlab实现离散傅里叶变换

用matlab实现离散傅里叶变换
摘要:
1.离散傅里叶变换的概述
2.MATLAB 实现离散傅里叶变换的方法
3.离散傅里叶变换的应用实例
4.注意事项和局限性
正文:
一、离散傅里叶变换的概述
离散傅里叶变换(Discrete Fourier Transform,DFT)是一种在离散域中实现的傅里叶变换,它可以将一个离散信号从时域转换到频域。

DFT 在工程、科学和数学等领域有着广泛的应用,例如信号处理、图像处理、音频处理等。

二、MATLAB 实现离散傅里叶变换的方法
MATLAB 提供了fft 函数来实现离散傅里叶变换,该函数的用法如下:```matlab
X = fft(x);
```
其中,x 是输入的离散信号,X 是输出的离散傅里叶变换结果。

fft 函数的运行时间与输入信号的长度成正比,因此对于较大的信号,计算时间可能会较长。

三、离散傅里叶变换的应用实例
1.信号处理:在通信系统中,信号往往受到噪声的影响,通过离散傅里叶
变换可以将信号从时域转换到频域,以便分析和处理。

2.图像处理:离散傅里叶变换可以用于图像的频谱分析,从而实现图像的滤波、增强和压缩等操作。

3.音频处理:离散傅里叶变换可以用于音频信号的谱分析,从而实现音频信号的滤波、降噪和音质增强等操作。

四、注意事项和局限性
1.当使用fft 函数时,需要注意输入信号的长度应为2 的整数次幂,否则会导致结果错误。

2.在进行离散傅里叶变换时,需要根据实际应用场景选择合适的窗函数,以避免频谱泄漏和频谱混叠等问题。

3.离散傅里叶变换是一种近似方法,当信号长度较小时,结果可能存在误差。

有关傅里叶变换的MATLAB仿真

有关傅里叶变换的MATLAB仿真

有关傅里叶变换的MATLAB仿真Homework 1:1) Determine the DFT of sequence x(n)=R4(n) with N=4, N=8 and N=16 by MATLAB, and plot the figures;程序如下:function[Xk] = DFT(xn,N)k = [0:1:N-1];n = [0:1:N-1];Wn = exp(-j*2*pi/N);kn = k'*n;Wn_kn = Wn.^kn;Xk = xn*Wn_kn;clearxn1=[1 1 1 1];xn2=[1 1 1 1 0 0 0 0];xn3=[1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0];N1=length(xn1);N2=length(xn2);N3=length(xn3);XK1=DFT(xn1,N1); magX1=abs(XK1);XK2=DFT(xn2,N2); magX2=abs(XK2);XK3=DFT(xn3,N3); magX3=abs(XK3)subplot(3,1,1);L1=0:1:N1-1;stem(L1,magX1); axis([0 N1 0 5]);subplot(3,1,2);L2=0:1:N2-1;stem(L2,magX2); axis([0 N2 0 5]);subplot(3,1,3);L3=0:1:N3-1;stem(L3,magX3);axis([0 N3 0 5]);最终方针波形如下:2) Determine the FT of sequence x(n)=R4(n) by MATLAB, and plot the figure;程序如下:function Ke=FT(xn,N)n=0:1:N-1;w=0:0.01*pi:2*pi;Wn=exp(-j*n'*w);Ke=xn*Wn;endclear;xn=[1 1 1 1];w=0:0.01*pi:2*pi;N=length(xn);Ke=FT(xn,N);Ke1=abs(Ke);plot(w,Ke1);axis([0 2*pi 0 5]);最终仿真波形如下:3) Compare figures and give the relationship between DFT and FT;程序如下:(调用函数上边已经求得,这里不再重复)clearxn1=[1 1 1 1];xn2=[1 1 1 1 0 0 0 0];xn3=[1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0];N1=length(xn1);N2=length(xn2);N3=length(xn3);XK1=DFT(xn1,N1);magX1=abs(XK1);XK2=DFT(xn2,N2);magX2=abs(XK2);XK3=DFT(xn3,N3);magX3=abs(XK3);subplot(4,1,1);L1=0:1:N1-1;stem(L1,magX1);axis([0 N1 0 5]);xlabel('N=4');subplot(4,1,2);L2=0:1:N2-1; stem(L2,magX2); axis([0 N2 0 5]); xlabel('N=8');subplot(4,1,3);L3=0:1:N3-1; stem(L3,magX3); axis([0 N3 0 5]); xlabel('N=16');subplot(4,1,4);xn=[1 1 1 1];w=0:0.01*pi:2*pi; N=length(xn);Ke=FT(xn,N);Ke1=abs(Ke); plot(w,Ke1);axis([0 2*pi 0 5]); xlabel('FT');Homework 2:1) Computing the 24-points DFTs of the two sequences that x1(n)= cos(nπ/6) and x2(n)= cos(nπ/4) using a single 24-point DFT by Matlab;2) Plot the figure of x1(n), x2(n), |X1(k)| and |X2(k)|;3) Analysis the value of |X1(k)| and |X2(k)|;4) Applying IDFT to X1(k) and X2(k) to obtain x1N(n) and x2N(n);程序如下:function[Xk] = DFT(xn,N)k = [0:1:N-1];n = [0:1:N-1];Wn = exp(-j*2*pi/N);kn = k'*n;Wn_kn = Wn.^kn;Xk = xn*Wn_kn;function[xn] =IDFT(Xk,N) k = [0:1:N-1];n = [0:1:N-1];Wn = exp(-j*2*pi/N);kn = k'*n;Wn_kn = Wn.^(-kn);xn = (Xk*Wn_kn)/N;clearN=24;n=0:23;xn1=cos(n*pi/6);xn2=cos(n*pi/4);xn=xn1+j*xn2;XK=DFT(xn,N);XKN=conj(XK);for k=2:NXKN(k)=conj(XK(N-k+2)); endXK1=(XK+XKN)/2XK2=(XK-XKN)/(2*j)x1n=IDFT(XK1,N);x2n=IDFT(XK2,N);subplot(2,2,1)stem(n,xn1);subplot(2,2,2)stem(n,xn2);subplot(2,2,3)stem(n,x1n);axis([0 30 -1 1]);subplot(2,2,4)stem(n,x2n);axis([0 30 -1 1]);最终仿真波形如下图:5) Compare x1(n) and x1N(n);Compare x2(n) and x2N(n);这里,x1(n)是程序中的xn1,x2(n)是程序中的xn2;x1N(n)是程序中的x1n,x1N(n)是程序中的x2n,他们的比较如上图所示。

实验3 离散序列的傅里叶变换的MATLAB实现

实验3 离散序列的傅里叶变换的MATLAB实现

信息工程学院实验报告课程名称:数字信号处理实验项目名称:实验3 离散序列的傅里叶变换的MATLAB 实现 实验时间:班级: 姓名: 学号:一、实 验 目 的:熟悉离散序列的傅里叶变换理论及其MATLAB 实现。

二、实 验 设 备 与 器 件MATLAB 2008软件三、实 验 内 容 与 结 果 分 析3.1 在0到 区间画出矩形序列10()R n 的离散时间傅里叶变换(含幅度和相位)。

指令语句如下:n=-10:10;x=[(n>=0)&(n<10)];k=-200:200;w=(pi/200)*k;X=x*(exp(-j*pi/200)).^(n'*k);magX=abs(X);angX=angle(X);subplot(2,1,1);plot(w,magX,'LineWidth',2);xlabel('Frequency');ylabel('|X|');grid on ;subplot(2,1,2);plot(w,angX,'LineWidth',2);xlabel('Frequency');ylabel('Angle');grid on ;执行结果如图3-1所示:Frequency |X |Frequency A n g l e图3-13.2 求序列x(n)=1,-2≤n ≤2的离散时间傅里叶变换(含幅度和相位)。

指令语句如下:n=-10:10;x=[(n>=-2)&(n<2)];k=-200:200;w=(pi/200)*k;X=x*(exp(-j*pi/200)).^(n'*k);magX=abs(X);angX=angle(X);subplot(2,1,1);plot(w,magX,'LineWidth',2);xlabel('Frequency');ylabel('|X|');grid on ;subplot(2,1,2);plot(w,angX,'LineWidth',2);xlabel('Frequency');ylabel('Angle');grid on ;执行结果如图3-2所示:-4-3-2-10123401234Frequency |X |-4-3-2-101234-4-224Frequency A n g l e图3-24.思考题4.1什么是共轭对称性?结合例2-1加以分析。

matlab画离散傅里叶变换dft公式

matlab画离散傅里叶变换dft公式

离散傅里叶变换(Discrete Fourier Transform,DFT)是一种常用的信号处理工具,用于分析信号的频谱和频率成分。

在MATLAB中,可以使用内置函数来快速实现离散傅里叶变换,并且可以通过公式来理解其原理和实现过程。

一、离散傅里叶变换的定义离散傅里叶变换是将离散的时间序列信号转化为离散的频谱序列,其定义如下:给定长度为N的离散信号x(n),其离散傅里叶变换X(k)的计算公式为:X(k) = Σ x(n) * exp(-j*2πnk/N),n = 0, 1, ..., N-1其中,k表示频率序列的索引,取值范围为0到N-1。

exp(-j*2πnk/N)是复数指数形式的旋转因子,n表示时间序列的索引。

二、MATLAB中的离散傅里叶变换函数在MATLAB中,可以使用fft函数来快速计算离散傅里叶变换。

其函数原型为:Y = fft(X)其中,X为输入的离散信号,Y为离散傅里叶变换的结果。

如果需要计算反变换,则可以使用ifft函数。

三、MATLAB代码实现离散傅里叶变换下面是使用MATLAB实现离散傅里叶变换的示例代码:```matlab生成长度为N的离散信号N = 100;x = rand(1, N);计算离散傅里叶变换X = fft(x);绘制频谱图f = (0:N-1) * (1/N); 频率序列plot(f, abs(X));xlabel('频率');ylabel('幅度');title('离散傅里叶变换频谱图');```以上代码首先生成了长度为N的随机离散信号x,然后使用fft函数计算了其离散傅里叶变换结果X,并绘制了频谱图。

四、离散傅里叶变换的性质和应用离散傅里叶变换具有线性、周期性、卷积和相关性等性质,可以广泛应用于信号处理、通信、图像处理、音频处理等领域。

通过分析离散信号的频谱和频率成分,可以实现信号的滤波、频谱分析、频率提取等功能。

用matlab实现离散傅里叶变换

用matlab实现离散傅里叶变换

用Matlab实现离散傅里叶变换1. 简介离散傅里叶变换(Discrete Fourier Transform,DFT)是一种将时域信号转换为频域信号的方法。

它可以将一个离散序列表示为一组正弦和余弦函数的线性组合。

在信号处理、图像处理、通信等领域中广泛应用。

Matlab是一款功能强大的数学建模和仿真软件,内置了丰富的工具箱,包括用于计算和可视化离散傅里叶变换的函数。

在本文中,我们将使用Matlab来实现离散傅里叶变换,并介绍其基本原理和应用场景。

2. 离散傅里叶变换的基本原理离散傅里叶变换是对一个长度为N的离散序列进行频域分析的方法。

假设输入序列为x(n),其中0 ≤ n ≤ N-1。

那么其离散傅里叶变换X(k)定义如下:其中,e是自然对数的底数,i是虚数单位。

离散傅里叶变换将输入序列x(n)分解为N个复数的和,每个复数表示了不同频率上的振幅和相位。

3. Matlab实现离散傅里叶变换在Matlab中,我们可以使用fft函数来计算离散傅里叶变换。

该函数接受一个向量作为输入,并返回其对应的离散傅里叶变换结果。

下面是一个简单的示例代码,演示了如何使用Matlab实现离散傅里叶变换:% 定义输入序列x = [1, 2, 3, 4];% 计算离散傅里叶变换X = fft(x);% 打印结果disp(X);运行以上代码,将输出计算得到的离散傅里叶变换结果。

在本例中,输入序列为[1, 2, 3, 4],输出结果为[10+0i, -2+2i, -2+0i, -2-2i]。

每个复数表示了不同频率上的振幅和相位。

4. 离散傅里叶变换的应用场景离散傅里叶变换在信号处理和图像处理领域有着广泛的应用。

下面介绍几个常见的应用场景:4.1 音频信号处理离散傅里叶变换可以将音频信号从时域转换到频域,分析音频信号中不同频率上的成分。

这对于音频压缩、语音识别、音乐分析等任务非常重要。

4.2 图像处理离散傅里叶变换可以将图像从空域转换到频域,分析图像中不同空间频率上的成分。

数字信号处理实验 matlab版 离散傅里叶变换(DFT)

数字信号处理实验 matlab版 离散傅里叶变换(DFT)
>>n=0:4*N-1;k=0:4*N-1;
>> xn1=xn(mod(n,N)+1); %即xn1=[xn,xn,xn,xn]
>> Xk=xn1*exp(-j*2*pi/N).^(n'*k);%离散傅里叶变换
>> subplot(2,2,1),stem(xn);%显示序列主值
>> title('原主值信号x(n)');
>>N=length(xn);
>>n=0:N-1;
>> w=linspace(-2*pi,2*pi,500);%将[-2p,2p]频率区间分割为500份
>> X=xn*exp(-j*n'*w);%离散时间傅里叶变换
>>subplot(3,1,1),stem(n,xn,'k');
>>ylabel('x(n)');
解MATLAB程序如下:
>> xn=[7,6,5,4,3,2];
>> N=length(xn);
>> n=0:N-1;
>> w=linspace(-2*pi,2*pi,500);%将[-2p,2p]频率区间分割为500份
>> X=xn*exp(-j*n'*w);%离散时间傅里叶变换
>> subplot(3,1,1),stem(n,xn,'k');
(12-2)
从离散傅里叶变换定义式可以看出,有限长序列在时域上是离散的,在频域上也是离散的。式中, 即仅在单位圆上N个等间距的点上取值,这为使用计算机进行处理带来了方便。

实验3离散序列的傅里叶变换的MATLAB实现

实验3离散序列的傅里叶变换的MATLAB实现

实验3 离散序列的傅里叶变换的MATLAB 实现1. 实验目的熟悉离散序列的傅里叶变换理论及其MATLAB 实现。

2。

实例分析2.1离散序列傅里叶变换的MATLAB 实现例2。

1 已知()(0.9),1010n x n n =--≤≤,求其离散时间傅里叶变换,并讨论其共轭对称性. 根据离散序列傅里叶变换公式:()()j j n n X e x n e ωω∞-=-∞=∑,将下列指令编辑到 “exe2dtft.m" 文件中。

其中,并以pi/100为间隔取值.% exe2dtft.m 序列的离散时间傅里叶变换n=—10:10; x=(—0。

9).^n;k=-200:200; w= (pi/100)*k ;X=x*(exp (-j*pi/100)).^(n'*k);magX=abs(X);angX=angle(X );subplot(2,1,1);plot (w,magX);xlabel(’Frequency');ylabel('|X|’);grid on; subplot(2,1,2);plot (w ,angX );xlabel('Frequency');ylabel(’Angle’);grid on;运行“exe2dtft.m ” 文件将产生如图2-3所示的序列。

由图2-3可知,()j X e ω不仅是ω的周期函数,而且是共轭对称的.因此,对于实值序列,只需从0到π画出他们的傅里叶变换的幅度和相位就够了。

图2-1 离散序列的DTFT2.2离散系统差分方程的MATLAB 求解方法例2。

2 一个三阶低通滤波器由下面差分方程描述:()0.0181()0.0543(1)0.0543(2)0.0181(3)1.76(1) 1.1829(2)0.2781(3)y n x n x n x n x n y n y n y n =+-+-+-+---+- 画出这个滤波器的幅度和相位响应。

数字信号处理实验 matlab版 离散傅里叶变换的性质

数字信号处理实验 matlab版 离散傅里叶变换的性质

实验13 离散傅里叶变换的性质(完美格式版,本人自己完成,所有语句正确,不排除极个别错误,特别适用于山大,勿用冰点等工具下载,否则下载之后的word格式会让很多部分格式错误,谢谢)XXXX学号姓名处XXXX一、实验目的1 加深对离散傅里叶变换(DFT)基本性质的理解。

2 了解有限长序列傅里叶变换(DFT)性质的研究方法。

3 掌握用MATLAB语言进行离散傅里叶变换性质分析时程序编写的方法。

二、实验内容1 线性性质。

2 循环移位性质。

3 循环折叠性质。

4 时域和频域循环卷积特性。

5 循环对称性。

三、实验环境MA TLAB7.0四、实验原理1 线性性质如果两个有限长序列分别为x1(n)和x2(n),长度分别为N1和N2,且y(n)=ax1(n)+bx2(n) (a、b均为常数)则该y(n)的N点DFT为Y(k)=DFT[y(n)]=aX1(k)+bX2(k) 0≤k≤N-1其中:N=max[N1,N2],X1(k)和X2(k)分别为x1(n)和x2(n)的N点DFT。

例13-1已知x1(n)=[0,1,2,4],x2(n)=[1,0,1,0,1],求:(1)y(n)=2x1(n)+3x2(n),再由y(n)的N点DFT获得Y(k);(2)由x1(n)、x2(n)求X1(k)、X2(k),再求Y(k)=2X1(k)+3X2(k)。

用图形分别表示以上结果,将两种方法求得的Y(k)进行比较,由此验证有限长序列傅里叶变换(DFT)的线性性质。

解MA TLAB程序如下:>> xn1=[0,1,2,4]; %建立xn1序列>> xn2=[1,0,1,0,1]; %建立xn2序列>> N1=length(xn1);N2=length(xn2);>> N=max(N1,N2); %确定N>> if N1>N2 xn2=[xn2,zeros(1,N1-N2)]; %对长度短的序列补0>> elseif N2>N1 xn1=[xn1,zeros(1,N2-N1)];>> end>> yn=2*xn1+3*xn2; %计算yn>> n=0:N-1;k=0:N-1;>> Yk1=yn*(exp(-j*2*pi/N)).^(n'*k); %求yn的N点DFT>> Xk1=xn1*(exp(-j*2*pi/N)).^(n'*k); %求xn1的N点DFT >> Xk2=xn2*(exp(-j*2*pi/N)).^(n'*k); %求xn2的N点DFT >> Yk2=2*Xk1+3*Xk2; %由Xk1、Xk2求Yk>> subplot(4,2,1),stem(n,xn1);>> title('x1(n)');>> subplot(3,2,2),stem(n,Xk1);>> title('X1(k)');>> subplot(4,2,3),stem(n,xn2);>> title('x2(n)');>> subplot(3,2,4),stem(n,Xk2);>> title('X1(k)');>> subplot(4,2,5),stem(n,yn);>> title('yn');>> subplot(3,2,6),stem(n,Yk2);>> title('2*Xk1+3*Xk2');>> subplot(4,2,7),stem(n,Yk1);>> title('DFT[y(n)]');求得的Y(k),如下所示:Yk=23.0000 -7.5902+1.5388i 3.5902-0.3633i3.5902+0.3633i -7.5902-1.5388i运行结果如图13-1所示。

matlab编程实现傅里叶变换

matlab编程实现傅里叶变换

傅里叶变换是信号处理和图像处理中的重要数学工具,可以将一个信号或图像从时域转换到频域。

MATLAB作为一款强大的数学软件,可以方便地实现傅里叶变换并进行相应的分析和处理。

本文将介绍如何使用MATLAB编程实现傅里叶变换,并探讨其在信号处理和图像处理中的应用。

一、MATLAB中的傅里叶变换函数在MATLAB中,可以使用fft函数来进行一维离散傅里叶变换(DFT)的计算,使用fft2函数进行二维离散傅里叶变换(DFT)的计算。

这两个函数的基本语法如下:1. 一维离散傅里叶变换Y = fft(X)其中,X是输入的一维信号(向量),Y是输出的一维频谱(向量)。

2. 二维离散傅里叶变换Y = fft2(X)其中,X是输入的二维图像(矩阵),Y是输出的二维频谱(矩阵)。

除了fft和fft2函数外,MATLAB还提供了ifft和ifft2函数用于进行离散傅里叶逆变换。

通过这些函数,我们可以方便地实现傅里叶变换和逆变换的计算。

二、MATLAB中的傅里叶变换实例为了更好地理解MATLAB中的傅里叶变换实现,我们可以通过一个具体的实例来进行演示。

假设我们有一个包含两个正弦波的信号,我们首先可以使用MATLAB生成这个信号,并对其进行傅里叶变换。

生成信号fs = 1000; 采样频率为1000Hzt = 0:1/fs:1-1/fs; 时间范围为1秒f1 = 50; 第一个正弦波的频率为50Hzf2 = 120; 第二个正弦波的频率为120Hzx = 0.7*sin(2*pi*f1*t) + sin(2*pi*f2*t); 生成包含两个正弦波的信号进行傅里叶变换N = length(x); 信号的长度X = fft(x)/N; 进行离散傅里叶变换,并进行归一化处理f = (0:N-1)*(fs/N); 计算频率轴figure;subplot(2,1,1);plot(f,abs(X)); 绘制频谱幅度title('单边频谱');xlabel('频率/Hz');ylabel('幅度');subplot(2,1,2);plot(f,angle(X)); 绘制频谱相位title('频谱相位');xlabel('频率/Hz');ylabel('相位');通过上面的实例,我们可以看到,MATLAB可以很方便地实现最常见的傅里叶变换,并且提供了丰富的绘图功能来呈现变换结果。

matlab离散信号的傅里叶变换

matlab离散信号的傅里叶变换

matlab离散信号的傅里叶变换离散信号的傅里叶变换是一种在时间和频域之间进行转换的数学工具。

它可以将一个离散信号分解成一系列复杂振幅和相位的正弦和余弦函数,以便更好地理解信号的频率特性和频谱分布。

本文将详细介绍离散信号的傅里叶变换的理论基础、计算方法以及应用案例。

首先,让我们回顾一下连续傅里叶变换的概念。

在连续傅里叶变换中,一个连续时间域信号可以表示为频域的复指数函数的线性组合。

类似地,离散傅里叶变换是针对离散时间域信号的一种变换方法。

离散傅里叶变换(DFT)是简化的离散傅里叶变换,它对有限长度的离散序列进行处理,并产生相应的频谱。

离散傅里叶变换的定义如下:\[ X(k) = \sum_{n=0}^{N-1} x(n) \cdot e^{-j \frac{2\pi}{N} kn} \]其中,\(x(n)\) 是离散时间信号的采样值,\(N\) 是信号的长度,\(X(k)\) 是傅里叶变换后的频域信号的k-th点的值。

离散傅里叶变换的计算过程非常繁琐,但是幸运的是,Matlab中有现成的函数可以直接计算离散傅里叶变换。

在Matlab中,使用`fft`函数即可实现离散傅里叶变换的计算。

例如,对一个长度为N的离散信号进行傅里叶变换可以通过以下代码实现:matlabX = fft(x, N);其中,`x` 是输入的离散信号,`N` 是信号的长度,`X` 是傅里叶变换的结果。

计算完离散傅里叶变换后,我们通常关心的是信号的频谱。

频谱是指信号在频率域上的表示,它展示了信号的频率成分和相应的幅度。

在Matlab中,可以通过`fftshift`函数将频谱的零频率移到频谱的中心位置,从而更好地观察频谱的分布。

除了频谱之外,我们还可以通过离散傅里叶变换计算信号的功率谱密度。

功率谱密度是频谱的模的平方,表示了信号在不同频率上的功率分布。

在Matlab中,可以通过以下代码计算信号的功率谱密度:matlabP = abs(X).^2 / N;其中,`abs`函数计算复数的模,`.^`表示逐元素的平方,`/ N`是为了进行归一化,使得功率谱密度的总和等于信号的总功率。

用Matlab对信号进行傅里叶变换实例

用Matlab对信号进行傅里叶变换实例

目录用Matlab对信号进行傅里叶变换 (2)Matlab的傅里叶变换实例 (5)Matlab方波傅立叶变换画出频谱图 (7)用Matlab对信号进行傅里叶变换1.离散序列的傅里叶变换DTFT(Discrete Time Fourier Transform)代码:1 N=8; %原离散信号有8点2 n=[0:1:N-1] %原信号是1行8列的矩阵3 xn=0.5.^n; %构建原始信号,为指数信号45 w=[-800:1:800]*4*pi/800; %频域共-800----+800 的长度(本应是无穷,高频分量很少,故省去)6 X=xn*exp(-j*(n'*w)); %求dtft变换,采用原始定义的方法,对复指数分量求和而得7 subplot(311)8 stem(n,xn);9 title('原始信号(指数信号)');10 subplot(312);11 plot(w/pi,abs(X));12 title('DTFT变换')结果:分析:可见,离散序列的dtft变换是周期的,这也符合Nyquist 采样定理的描述,连续时间信号经周期采样之后,所得的离散信号的频谱是原连续信号频谱的周期延拓。

2.离散傅里叶变换DFT(Discrete Fourier Transform)与1中DTFT不一样的是,DTFT的求和区间是整个频域,这对结果图:分析:DFT只是DTFT的现实版本,因为DTFT要求求和区间无穷,而DFT只在有限点内求和。

3.快速傅里叶变换FFT(Fast Fourier Transform)虽然DFT相比DTFT缩减了很大的复杂度,但是任然有相当大的计算量,不利于信息的实时有效处理,1965年发现的DFT解决了这一问题。

实现代码:1 N=64; %原离散信号有8点2 n=[0:1:N-1] %原信号是1行8列的矩阵3 xn=0.5.^n; %构建原始信号,为指数信号4 Xk=fft(xn,N);5 subplot(221);6 stem(n,xn);7 title('原信号');8 subplot(212);9 stem(n,abs(Xk));10 title('FFT变换')效果图:分析:由图可见,fft变换的频率中心不在0点,这是fft算法造成的,把fft改为fftshift可以将频率中心移到0点。

matlab中离散序列的傅里叶变换

matlab中离散序列的傅里叶变换

matlab中离散序列的傅里叶变换离散序列的傅里叶变换是信号处理中常用的方法之一,它可以将一个离散序列(数字信号)转换为频域表示。

在MATLAB中,我们可以使用fft函数来实现离散序列的傅里叶变换。

下面我将详细介绍傅里叶变换的原理和在MATLAB中的实现方法。

1. 傅里叶变换的原理傅里叶变换是数学中的一个重要工具,用于将一个信号从时域转换为频域。

在离散序列的情况下,傅里叶变换可以表示为以下公式:X(k) = Σ(x(n)e^(-j2πkn/N))其中,X(k)是变换后的频域表示,x(n)是原始序列,N是序列的长度,k是频域的索引。

2. 在MATLAB中进行离散序列的傅里叶变换在MATLAB中,我们可以使用fft函数来实现离散序列的傅里叶变换。

该函数的用法如下:Y = fft(X)其中,X是输入的离散序列,Y是傅里叶变换后的频域表示。

3. 实例演示接下来,我将通过一个具体的实例来演示在MATLAB中进行离散序列的傅里叶变换。

假设我们有一个长度为N的离散序列x,现在需要对它进行傅里叶变换。

首先,我们需要生成一个离散序列,并给出相关参数,如下所示:N = 100; % 序列长度fs = 1000; % 采样频率t = (0:N-1)/fs; % 时间向量f1 = 100; % 第一个正弦波频率f2 = 200; % 第二个正弦波频率x = sin(2*pi*f1*t) + sin(2*pi*f2*t); % 生成离散序列接下来,我们使用fft函数对离散序列进行傅里叶变换,并将结果保存在变量Y中:Y = fft(x);最后,我们可以绘制原始序列和傅里叶变换后的频域表示,如下所示:subplot(2,1,1);plot(t,x);xlabel('时间 (s)');ylabel('幅度');title('原始序列');subplot(2,1,2);f = (-N/2:N/2-1)*(fs/N);stem(f,abs(fftshift(Y)));xlabel('频率 (Hz)');ylabel('幅度');title('傅里叶变换');通过运行上述代码,我们可以得到原始序列和傅里叶变换后的频域表示的图像。

傅里叶变换特性matlab仿真3

傅里叶变换特性matlab仿真3

3-231 题目要求已知序列x(n)={1, 2, 3, 3, 2, 1}。

1)求出x(n)的傅里叶变换X(ejω),画出幅频特性和相频特性曲线(提示:用1024点FFT近似X(ejω));2)计算x(n)的N(N≥6)点离散傅里叶变换X(k),画出幅频特性和相频特性曲线;3)将X(ejω)和X(k)的幅频特性和相频特性曲线分别画在同一幅图中,验证X(k)是X(ejω)的等间隔采样,采样间隔为2π/N;4)计算X(k)的N点IDFT,验证DFT和IDFT的惟一性。

2 题目分析(1)题用1024点DFT近似x(n)的傅里叶变换。

(2)题用32点DFT。

(3)题由图(e)(f)可验证。

(4)题图(g) 验证了IDFT的惟一性。

3程序源码clear all;close all;xn=[1 2 3 3 2 1]; %输入时域序列向量x(n)N=32;M=1024;Xjw=fft(xn,M); %计算xn的1024点DFT,近似表示序列的傅里叶变换Xk32=fft(xn,N); %计算xn的32点DFTxn32=ifft(Xk32,N); %计算Kk32的32点IDFT%以下为绘图部分k=0:M-1;wk=2*k/M; %产生M点DFT对应的采样点频率(关于π归一化值) subplot(3,2,1);plot(wk,abs(Xjw)); %绘制M点DFT的幅频特性图title('(a) FT[x(n)]的幅频特性图');xlabel('ω/π');ylabel('幅度') subplot(3,2,3);plot(wk,angle(Xjw)); %绘制x(n)的相频特性图line([0,2],[0,0]) %画横坐标轴线title('(b)FT[x(n)]的相频特性图');xlabel('ω/π');ylabel('相位');%axis([0,2,-3.5,3.5])k=0:N-1;subplot(3,2,2);stem(k,abs(Xk32),'.'); %绘制64点DFT的幅频特性图title('(c)32点DFT的幅频特性图');xlabel('k');ylabel('幅度');axis([0,32,0,15])subplot(3,2,4);stem(k,angle(Xk32),'.'); %绘制64点DFT的相频特性图line([0,32],[0,0]) %画横坐标轴线title('(d)32点DFT的相频特性图')xlabel('k');ylabel('相位');axis([0,32,-3.5,3.5])figure(2)k=0:M-1;wk=2*k/M; %产生M点DFT对应的采样点频率(关于π归一化值) subplot(3,2,1);plot(wk,abs(Xjw)); %绘制M点DFT的幅频特性图title('(e) FT[x(n)]和32点DFT[x(n)]的幅频特性');xlabel('ω/π');ylabel('幅度')hold onsubplot(3,2,3);plot(wk,angle(Xjw)); %绘制x(n)的相频特性图title('(f)FT[x(n)]和32点DFT[x(n)]的相频特性');xlabel('ω/π');ylabel('相n)]位');hold onk=0:N-1;wk=2*k/N; %产生N点DFT对应的采样点频率(关于π归一化值) subplot(3,2,1);stem(wk,abs(Xk32),'.'); %绘制64点DFT的幅频特性图subplot(3,2,3);stem(wk,angle(Xk32),'.'); %绘制64点DFT的相频特性图line([0,2],[0,0]);n=0:31;subplot(3,2,2);stem(n,xn32,'.');title('(g)32点IDFT[X(k)]波形');xlabel('n');ylabel('x(n)');4 输出如图3-251题目要求已知序列h(n)=R6(n), x(n)=nR8(n)。

MATLAB的离散傅里叶变换的仿真

MATLAB的离散傅里叶变换的仿真

M A T L A B的离散傅里叶变换的仿真WTD standardization office【WTD 5AB- WTDK 08- WTD 2C】应用M A T L A B对信号进行频谱分析及滤波设计目的要求学生会用MATLAB语言进行编程,绘出所求波形,并且运用FFT求对连续信号进行分析。

一、设计要求1、用Matlab产生正弦波,矩形波,并显示各自的时域波形图;2、进行FFT变换,显示各自频谱图,其中采样率、频率、数据长度自选,要求注明;3、绘制三种信号的均方根图谱;4、用IFFT回复信号,并显示恢复的正弦信号时域波形图。

二、系统原理用FFT对信号作频谱分析是学习数字信号处理的重要内容。

经常需要进行频谱分析的信号是模拟信号和时域离散信号。

频谱分辨率直接和FFT的变换区间N有关,因为FFT能够实现频率分辨率是2π/N。

x(n)是一个长度为M的有限长序列,则x(n)的N点离散傅立叶变换为:X(k)=DFT[x(n)]=knNWNnnx∑-=1)(,k=0,1,...,N-1NjeNWπ2-=逆变换:x(n) =IDFT[X(k)]=knNWkXNnN-∑-=1)(1,k=0,1,...,N-1但FFT是一种比DFT更加快速的一种算法,提高了DFT的运算速率,为数字信号处理技术应用于各种信号处理创造了条件,大大提高了数字信号处理技术的发展。

本实验就是采用FFT,IFFT对信号进行谱分析。

三、程序设计fs=input('please input the fs:');%设定采样频率N=input('please input the N:');%设定数据长度t=0::1;f=100;%设定正弦信号频率%生成正弦信号x=sin(2*pi*f*t);figure(1);subplot(211);plot(t,x);%作正弦信号的时域波形axis([0,,-1,1]);title('正弦信号时域波形');z=square(50*t);subplot(212)plot(t,z)axis([0,1,-2,2]);title('方波信号时域波形');grid;%进行FFT变换并做频谱图y=fft(x,N);%进行fft变换mag=abs(y);%求幅值f=(0:N-1)*fs/N;%横坐标频率的表达式为f=(0:M-1)*Fs/M;figure(2);subplot(211);plot(f,mag);%做频谱图axis([0,1000,0,200]);title('正弦信号幅频谱图');y1=fft(z,N);%进行fft变换mag=abs(y1);%求幅值f=(0:N-1)*fs/N;%横坐标频率的表达式为f=(0:M-1)*Fs/M; subplot(212);plot(f,mag);%做频谱图axis([0,1000,0,200]);title('方波信号幅频谱图');grid;%求功率谱sq=abs(y);power=sq.^2;figure(3)subplot(211);plot(f,power);title('正弦信号功率谱');grid;sq1=abs(y1);power1=sq1.^2;subplot(212);plot(f,power1);title('方波信号功率谱');grid;%用IFFT恢复原始信号xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs;figure(4);subplot(211);plot(ti,magx);axis([0,,-1,1]);title('通过IFFT转换的正弦信号波形');zifft=ifft(y1);magz=real(zifft);ti1=[0:length(zifft)-1]/fs;subplot(212);plot(ti1,magz);title('通过IFFT转换的方波信号波形');grid; 四、仿真结果及分析由图可以看出正弦波周期T=,采样点N=1024.程序为:x=sin(2*pi*f*t);figure(1);subplot(211);plot(t,x);%作正弦信号的时域波形axis([0,,-1,1]);title('正弦信号时域波形');z=square(50*t);subplot(212)plot(t,z)axis([0,1,-2,2]);title('方波信号时域波形');grid;2、对正弦波、方波信号进行FFT变换程序:y=fft(x,N);%进行fft变换mag=abs(y);%求幅值f=(0:N-1)*fs/N;%横坐标频率的表达式为f=(0:M-1)*Fs/M; figure(2);subplot(211);plot(f,mag);%做频谱图axis([0,1000,0,200]);title('正弦信号幅频谱图');y1=fft(z,N);%进行fft变换mag=abs(y1);%求幅值f=(0:N-1)*fs/N;%横坐标频率的表达式为f=(0:M-1)*Fs/M; subplot(212);plot(f,mag);%做频谱图axis([0,1000,0,200]);title('方波信号幅频谱图');grid;正弦信号、方波信号功率谱程序:sq=abs(y);power=sq.^2;figure(3)subplot(211);plot(f,power);title('正弦信号功率谱');grid;sq1=abs(y1);power1=sq1.^2;subplot(212);plot(f,power1);title('方波信号功率谱');grid;对两个信号进行恢复程序:xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs;figure(4);subplot(211);plot(ti,magx);axis([0,,-1,1]);title('通过IFFT转换的正弦信号波形');zifft=ifft(y1);magz=real(zifft);ti1=[0:length(zifft)-1]/fs;subplot(212);plot(ti1,magz);title('通过IFFT转换的方波信号波形');grid;当采样频率小于2fc或N小于M时恢复信号就会出现失真,频谱会发生馄叠。

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

应用MATLAB对信号进行频谱分析及滤波
设计目的
要求学生会用MATLAB语言进行编程,绘出所求波形,并且运用FFT求对连续信号进行分析。

一、设计要求
1、用Matlab产生正弦波,矩形波,并显示各自的时域波形图;
2、进行FFT变换,显示各自频谱图,其中采样率、频率、数据长度自选,要求注明;
3、绘制三种信号的均方根图谱;
4、用IFFT回复信号,并显示恢复的正弦信号时域波形图。

二、系统原理
用FFT对信号作频谱分析是学习数字信号处理的重要内容。

经常需要进行频谱分析的信号是模拟信号和时域离散信号。

频谱分辨率直接和FFT的变换区间N有关,因为FFT能够实现频率分辨率是2π/N。

x(n)是一个长度为M的有限长序列,则x(n)的N点离散傅立叶变换为:
N?1?2?kn)(nx j?W W NN e?0?n N X(k)=DFT[x(n)]=,k=0,1,...,N-1N?11?kn?)(WXk
N N0?n x(n) =IDFT[X(k)]= 逆变换:,k=0,1,...,N-1
但FFT是一种比DFT更加快速的一种算法,提高了DFT的运算速率,为数字信号处理技术应用于各种信号处理创造了条件,大大提高了数字信号处理技术的发展。

本实验就是采用FFT,IFFT对信号进行谱分析。

三、程序设计
fs=input('please input the fs:');%设定采样频率
N=input('please input the N:');%设定数据长度
t=0:0.001:1;
f=100;%设定正弦信号频率
%生成正弦信号
x=sin(2*pi*f*t);
figure(1);
subplot(211);
plot(t,x);%作正弦信号的时域波形
axis([0,0.1,-1,1]);
title('正弦信号时域波形');
z=square(50*t);
subplot(212)
plot(t,z)
axis([0,1,-2,2]);
title('方波信号时域波形');grid;
%进行FFT变换并做频谱图
y=fft(x,N);%进行fft变换
mag=abs(y);%求幅值
f=(0:M-1)*Fs/M;
横坐标频率的表达式为f=(0:N-1)*fs/N;%.
figure(2);
subplot(211);
plot(f,mag);%做频谱图
axis([0,1000,0,200]);
title('正弦信号幅频谱图');
y1=fft(z,N);%进行fft变换
mag=abs(y1);%求幅值
f=(0:N-1)*fs/N;%横坐标频率的表达式为f=(0:M-1)*Fs/M; subplot(212);
plot(f,mag);%做频谱图
axis([0,1000,0,200]);
title('方波信号幅频谱图');grid;
%求功率谱
sq=abs(y);
power=sq.^2;
figure(3)
subplot(211);
plot(f,power);
title('正弦信号功率谱');grid;
sq1=abs(y1);
power1=sq1.^2;
subplot(212);
plot(f,power1);
title('方波信号功率谱');grid;
%用IFFT恢复原始信号
xifft=ifft(y);
magx=real(xifft);
ti=[0:length(xifft)-1]/fs;
figure(4);
subplot(211);
plot(ti,magx);
axis([0,0.1,-1,1]);
title('通过IFFT转换的正弦信号波形');
zifft=ifft(y1);
magz=real(zifft);
ti1=[0:length(zifft)-1]/fs;
subplot(212);
plot(ti1,magz);
title('通过IFFT转换的方波信号波形');grid;
四、仿真结果及分析
由图可以看出正弦波周期T=0.01,采样点N=1024.程序为:
x=sin(2*pi*f*t);
figure(1);
subplot(211);
plot(t,x);%作正弦信号的时域波形
axis([0,0.1,-1,1]);
title('正弦信号时域波形');
z=square(50*t);
subplot(212)
plot(t,z)
axis([0,1,-2,2]);
title('方波信号时域波形');grid;
2、对正弦波、方波信号进行FFT变换程序:
y=fft(x,N);%进行fft变换
mag=abs(y);%求幅值
f=(0:N-1)*fs/N;%横坐标频率的表达式为f=(0:M-1)*Fs/M; figure(2);
subplot(211);
plot(f,mag);%做频谱图
axis([0,1000,0,200]);
title('正弦信号幅频谱图');
y1=fft(z,N);%进行fft变换
求幅值mag=abs(y1);%.
f=(0:N-1)*fs/N;%横坐标频率的表达式为f=(0:M-1)*Fs/M; subplot(212);
plot(f,mag);%做频谱图
axis([0,1000,0,200]);
title('方波信号幅频谱图');grid;
正弦信号、方波信号功率谱程序:
sq=abs(y);
power=sq.^2;
figure(3)
subplot(211);
plot(f,power);
title('正弦信号功率谱');grid;
sq1=abs(y1);
power1=sq1.^2;
subplot(212);
plot(f,power1);
');grid;
方波信号功率谱title('
对两个信号进行恢复程序:
xifft=ifft(y);
magx=real(xifft);
ti=[0:length(xifft)-1]/fs;
figure(4);
subplot(211);
plot(ti,magx);
axis([0,0.1,-1,1]);
title('通过IFFT转换的正弦信号波形');
zifft=ifft(y1);
magz=real(zifft);
ti1=[0:length(zifft)-1]/fs;
subplot(212);
plot(ti1,magz);
title('通过IFFT转换的方波信号波形');grid;
当采样频率小于2fc或N小于M时恢复信号就会出现失真,频谱会发生馄叠。

相关文档
最新文档