matl新编周期方波信号
- 格式:docx
- 大小:217.81 KB
- 文档页数:14
周期性矩形波(方波)信号:在MATLAB中用square函数来表示,其调用形式为
y=square(t,DUTY)
其作用类似于sin(t),用以产生一个时长为t、幅值为±1的周期性方波信号,其中的DUTY参数表示占空比,即在信号的一个周期中正值所占的百分比。
例如频率为30Hz的周期性方波信号的MATLAB 参考程序如下:
t=-2*pi/100:pi/1024:2*pi/100;
y=square(2*pi*30*t,50);
plot(t,y);
grid
ylim([-1.5 1.5])
矩形脉冲信号:在MATLAB中用rectpuls函数来表示,其调用形式为
y=rectpuls(t,width)
用以产生一个幅值为1,宽度为width,相对于t=0点左右对称的矩形波信号,该函数的横坐标范围由向量t决定,是以t=0为中心向左右各展开width/2的范围,width的默认值为1。
例:画宽为2的矩形脉冲信号的MATLAB源程序如下:
width=2;
t=-2:0.001:3;
ft=rectpuls(t,width);
plot(t,ft);
grid on;
ylim([-0.5 1.5])
====Word行业资料分享--可编辑版本--双击可删====
matlab 中画方波的square函数怎么设置周期和峰值
clc;clear
T=0:0.001:2*pi;
A=2;P=4;
y=A*square(P*T);
plot(T,y)
axis([T(1)-1 T(end)+1 -(A+1) (A+1)])
A峰值,P周期。
源-于-网-络-收-集。
一、引言Matlab是一款功能强大的数学软件,可以进行多种数学运算和数据可视化处理。
其中,绘制方波并进行傅里叶变换是其常用的功能之一。
本文将介绍如何使用Matlab绘制方波并进行傅里叶变换的代码。
二、绘制方波1. 打开Matlab软件,创建一个新的脚本文件。
2. 输入以下代码用于绘制方波:```matlabt = linspace(0, 1, 1000); 生成时间序列f = square(2*pi*5*t); 生成频率为5Hz的方波plot(t, f); 绘制方波图形xlabel('Time (s)'); X轴标签ylabel('Amplitude'); Y轴标签title('Square Wave'); 图形标题```3. 运行代码,即可在Matlab中看到绘制的方波图形。
三、进行傅里叶变换1. 接下来,我们将对绘制的方波进行傅里叶变换。
2. 输入以下代码进行傅里叶变换:```matlabL = length(t); 信号的长度N = 2^nextpow2(L); 计算最近的2的幂Y = fft(f, N)/L; 进行傅里叶变换frequencies = 1/(2*1)*linspace(0,1,N/2); 计算频率amplitude = 2*abs(Y(1:N/2)); 计算幅值plot(frequencies, amplitude); 绘制傅里叶变换图形xlabel('Frequency (Hz)'); X轴标签ylabel('Amplitude'); Y轴标签title('Fourier Transform of Square Wave'); 图形标题```3. 运行代码,即可在Matlab中看到绘制的傅里叶变换图形。
四、总结通过以上步骤,我们成功地使用Matlab绘制了方波并进行了傅里叶变换。
设计题目:应用MATLAB实现周期信号和非周期信号频谱仿真1 课程设计目的通过课程设计,提高学生综合运用所学知识来解决实际问题、查阅文献资料、及进行科学实验或技术设计的能力。
学会用MATLAB 语言编写信号与系统及数字信号处理的仿真程序;认真分析每个题目的具体要求;上机前初步编好程序,上机时认真调试程序;增加学生对仿真软件MATLAB的感性认识,熟悉MATLAB软件平台的使用和MATLAB编程方法及常用语句;了解MATLAB的编程方法和特点;加深理解采样与重构的概念,掌握连续系统频率响应概念,掌握利用MATLAB分析系统频率响应的方法和掌握利用MATLAB实现连续信号采用与重构的方法初步掌握线性系统的设计方法,培养独立工作能力。
培养学生正确的设计思想,理论联系实际的科学态度,严肃认真、实事求是的科学态度和勇于探索的创新精神。
培养学生综合运用所学信号与系统及数字信号处理的知识,分析和解决工程技术问题的能力。
为毕业设计打下基础。
2 设计原理2.1 MATLAB软件说明MATLAB(Matrix Laboratory)是美国Math Works公司产品,Matrix Laboratory意为“矩阵实验室”,最初的MATLAB只是一个数学计算工具。
但现在的MATLAB已经远不仅仅是一个“矩阵实验室”,它已经成为一个集概念设计、算法开发、建模仿真,实时实现于一体的集成环境,它拥有许多衍生子集工具。
MATLAB现已被广泛于数学、通信、信号处理、自动控制、神经网络、图形处理等许多不同学科的研究中。
MATLAB特点:(1)此高级语言可用于技术计算(2)此开发环境可对代码、文件和数据进行管理(3)交互式工具可以按迭代的方式探查、设计及求解问题(4)数学函数可用于线性代数、统计、傅立叶分析、筛选、优化以及数积分等(5)二维和三维图形函数可用于可视化数据(6)各种工具可用于构建自定义的图形用户界面(7)各种函数可将基于MATLAB 的算法与外部应用程序和语言(如 C 、C++、Fortran 、Java 、COM 以及 Microsoft Excel )集成 (8)不支持大写输入,内核仅仅支持小写2.2 周期信号的频谱分析——傅里叶级数FS(1) 任何满足狄义赫利条件周期函数都可展成傅里叶级数。
m a t l a b周期方波信号(一)周期离散方波信号频域分析与周期模拟信号一样,周期离散信号同样可以展开成傅里叶级数形式,并得到离散傅里叶级数(DFS)X(kΩ)=1N∑x(n)e−jkΩn k=0,1,2,…,N−1 N2n=−N2上式可以看成周期离散信号x(n)的离散傅里叶级数展开。
x(n)=∑X(kΩ)e jkΩnN−1k=0上式是DFS的反变换,记作IDFS并且称X(kΩ)与x(n)构成一对离散傅里叶级数变换对。
(以上两式中Ω=2π/N)在MTALAB中,DFS通过建立周期延拓函数语句实现:function Xk=DFS(n,x,N)if N>length(x)n=0:N-1;x=[x zeros(1,N-length(x))];endk=0:N-1;WN=exp(-j*2*pi/N);nk=n'*k;WNnk=WN.^nk;Xk=x*WNnk;end建立一个离散非周期方波信号x(n)=R N(n)={1,0≤n≤N−1 0,其他R4(n)通过周期延拓后所得的周期序列利用DFS计算实现代码如下:clear all;close all;clc;n=0:3;x=ones(1,4);X=fft(x,1024);Xk1=DFS(n,x,4);Xk2=DFS(n,x,8);figure(1);plot((-1023:2048)/2048*8,[abs(X) abs(X) abs(X)],'--');hold on;stem(-4:7,[abs(Xk1) abs(Xk1) abs(Xk1)],'LineWidth',2);grid;figure(2);plot((-1023:2048)/2048*16,[abs(X) abs(X) abs(X)],'--');hold on;stem(-8:15,[abs(Xk2) abs(Xk2) abs(Xk2)],'LineWidth',2);grid;set(gcf,'color','w');即第一幅图表示的是周期序列 x (n )=1 −∞<n <+∞ 的频谱,第二幅图表示的是周期序列x (n )={1,4k ≤n ≤4+4k 0,4k −4<n <4k的频谱。
matlab 周期方波信号(一) 周期离散方波信号频域分析与周期模拟信号一样,周期离散信号同样可以展开成傅里叶级数形式,并得到离散傅里叶级数(DFS )X (kΩ)=1N∑x (n )e −jkΩn k =0,1,2,…,N −1 N 2n=−N 2上式可以看成周期离散信号x(n)的离散傅里叶级数展开。
x (n )=∑X (kΩ)e jkΩn N−1k=0上式是DFS 的反变换,记作IDFS 并且称X(kΩ)与x(n)构成一对离散傅里叶级数变换对。
(以上两式中Ω=2π/N )在MTALAB 中,DFS 通过建立周期延拓函数语句实现:function Xk=DFS(n,x,N) if N>length(x) n=0:N -1;x=[x zeros(1,N -length(x))]; end k=0:N -1;WN=exp(-j*2*pi/N); nk=n'*k;WNnk=WN.^nk; Xk=x*WNnk; end建立一个离散非周期方波信号x (n )=R N (n )={1,0≤n ≤N −10,其他R 4(n )通过周期延拓后所得的周期序列利用DFS 计算实现代码如下:clear all;close all;clc; n=0:3;x=ones(1,4); X=fft(x,1024); Xk1=DFS(n,x,4); Xk2=DFS(n,x,8);figure(1);plot((-1023:2048)/2048*8,[abs(X) abs(X) abs(X)],'--');hold on; stem(-4:7,[abs(Xk1) abs(Xk1) abs(Xk1)],'LineWidth',2);grid; figure(2);plot((-1023:2048)/2048*16,[abs(X) abs(X) abs(X)],'--');hold on; stem(-8:15,[abs(Xk2) abs(Xk2) abs(Xk2)],'LineWidth',2);grid; set(gcf,'color','w');运行后得到的是分别以4和8为周期延拓后的R 4(n )频谱:即第一幅图表示的是周期序列 x (n )=1 −∞<n <+∞ 的频谱,第二幅图表示的是周期序列x (n )={1,4k ≤n ≤4+4k0,4k −4<n <4k的频谱。
方波的傅立叶分析[问题]周期性方波如B8.1a 图所示,对方波分解为傅立叶级数并画出方波合成曲线。
[数学模型] 方法一:用解析式。
一个复杂的振动是由一系列不同频率的简谐振动合成的,把一个复杂振动分解为不同频率的简谐振动的方法称为傅立叶分析。
周期性方波可表示为,(0/2)()0,(/2)A t T x t T t T <<⎧=⎨<<⎩ (8.1.1) 根据傅立叶定理,周期为T 的函数x (t )可以表示为余弦函数和正弦函数之和,设最小圆频率为ω,则其他圆频率是最小频率的整数倍,即01()(cos sin )2n n n a x t a n t b n t ωω∞==++∑ (8.1.2) 其中系数分别为002()d T a x t t T =⎰,02()cos d T n a x t n t t T ω=⎰,02()sin d T n b x t n t t T ω=⎰ (8.1.3) 级数中的第一项a 0/2是x (t )的时间平均值。
周期与圆频率之间的关系为T = 2π/ω (8.1.4)ω称为基频,n ω称为n 次倍频或n 次谐频。
对于n 次谐频,振幅为n A = (8.1.5a)初相为arctan n n nb a ϕ-= (8.1.5b) A n 和φn 称为振动的频谱,实际应用中只讨论振幅的频谱。
方波的系数分别为/2002d T a A t A T ==⎰ (8.1.6a)/2/200221cos d sin 0T T n A a A n t t n t TT n ωωω===⎰ (8.1.6b) /2/200221sin d cos [1(1)]πT T n n A A b A n t t n t T T n n ωωω-===--⎰ 其中偶数项为零,因此系数为212(21)πn A b n -=- (8.1.6c) B8.1a 图 /2 T 3T /2方波的展开式为12sin[(21)]()2π21n A A n t x t n ω∞=-=+-∑ (8.1.7) 方波的频谱就是b n 。
实验报告:Matlab常见信号分类和观察1. 背景Matlab是一种功能强大的数学软件,广泛应用于科学计算、数据分析和信号处理等领域。
信号是Matlab中的一个重要概念,在许多应用中起到了关键作用。
本实验旨在通过对常见信号的分类和观察,加深对Matlab信号处理能力的理解和应用。
2. 分析在信号处理中,常见的信号可以分为以下几类:2.1 时域信号时域信号是指信号的数值随时间变化的情况。
常见的时域信号有周期信号、非周期信号、连续信号和离散信号等。
2.1.1 周期信号周期信号是指具有重复模式的信号,其数值在一定时间间隔内重复出现。
周期信号可以用正弦函数、方波函数等进行描述。
在Matlab中,可以使用sin函数生成正弦信号,使用square函数生成方波信号。
2.1.2 非周期信号非周期信号是指没有重复模式的信号,其数值在任意时间段内不会重复出现。
非周期信号可以用脉冲函数、指数函数等进行描述。
在Matlab中,可以使用dirac函数生成单位冲激信号,使用exp函数生成指数衰减信号。
2.1.3 连续信号连续信号是指信号在任意时间段内都有定义。
连续信号可以用数学函数进行描述,如正弦函数、多项式函数等。
在Matlab中,可以使用数学函数表达式生成连续信号。
2.1.4 离散信号离散信号是指信号只在某些离散时间点上有定义。
离散信号可以用序列进行描述,如脉冲序列、阶跃序列等。
在Matlab中,可以使用数组生成离散信号。
2.2 频域信号频域信号是指信号在频率上的特性。
频域信号可以通过对时域信号进行傅里叶变换得到。
在Matlab中,可以使用fft函数进行傅里叶变换。
3. 实验过程和结果3.1 生成信号首先,我们可以通过Matlab提供的函数生成不同类型的信号。
例如,我们可以生成一个正弦信号:t = 0:0.01:10; % 时间范围为0到10,步长为0.01f = 1; % 正弦信号的频率为1HzA = 1; % 正弦信号的振幅为1x = A * sin(2*pi*f*t); % 生成正弦信号3.2 绘制信号图像接下来,我们可以使用Matlab的绘图函数将生成的信号可视化。
方波的fft变换matlab
嗨,以下是用MATLAB实现方波的FFT变换的方法:
首先,我们需要定义一个方波。
我们可以使用MATLAB的“square”函数来创建一个方波信号。
假设我们的象限值为1000,频率为10Hz。
```matlab
T = 1/10; % 周期
fs = 1000; % 采样频率
t = 0:1/fs:1-1/fs; % 时间
x = square(2*pi*t/T); % 方波信号
```
接下来,我们需要对方波信号进行FFT变换。
我们可以使用MATLAB的“fft”函数来处理此操作。
```matlab
N = length(x);% 信号长度
X = fft(x);% FFT变换
Pxx = X.*conj(X)/(N*(fs/2));% 计算功率谱
f = linspace(0,fs/2,length(Pxx));% 创建频率向量
```
现在,我们已经完成了FFT变换。
为了更好的可视化FFT结果,我们可以创建一个频谱图来显示振幅和频率。
```matlab
plot(f, 10*log10(Pxx))
grid on
title('方波的频谱图')
xlabel('频率 (Hz)')
ylabel('功率谱密度 (dB/Hz)')
```
运行脚本后,你会得到方波的频谱图。
matlab方波傅里叶变换(实用版)目录1.引言2.方波和傅里叶变换的概念3.MATLAB 中实现方波傅里叶变换的方法4.傅里叶变换的应用5.结论正文1.引言傅里叶变换是一种重要的信号处理技术,可以将信号从时域转换到频域,从而分析信号的频率特性。
在 MATLAB 中,可以使用 FFT(快速傅里叶变换)函数实现傅里叶变换。
本文将介绍如何使用 MATLAB 实现方波的傅里叶变换。
2.方波和傅里叶变换的概念方波是一种常见的信号形式,具有明显的周期性。
傅里叶变换可以将方波信号从时域转换到频域,从而显示其频率成分。
3.MATLAB 中实现方波傅里叶变换的方法在 MATLAB 中,可以使用 FFT 函数实现傅里叶变换。
首先需要创建一个方波信号,然后使用 FFT 函数对其进行变换,最后使用 plot 函数绘制变换结果。
具体步骤如下:1) 创建一个方波信号```matlab% 创建一个包含 500 个采样点的方波信号t = (0:499) * (1/500);f = 100;A = 1;y = A * sqrt(2) * (sin(2 * pi * f * t) + cos(2 * pi * f * t)); ```2) 对方波信号进行傅里叶变换```matlab% 使用 FFT 函数进行傅里叶变换Y = fft(y);```3) 绘制傅里叶变换结果```matlab% 绘制频率和幅值f = (0:499/500) * (1/500);P = abs(Y);plot(f, P);xlabel("Frequency (Hz)");ylabel("Amplitude");title("Magnitude of 傅里叶 Transform of Square Wave");```4.傅里叶变换的应用傅里叶变换在许多领域都有广泛的应用,如信号处理、图像处理、音频处理等。
信号与线性系统课程设计题目学号姓名学号姓名学号姓名学号姓名院系年级专业日期摘要利用MATLAB对周期为T0的方波信号进行傅里叶级数展开,并绘制离散幅度谱和不同次谐波叠加后的图形。
通过观察绘制的各个图像,加深对傅立叶变换和信号的分解与合成的理解。
AbstractExpanded the square wave signal with periodic T0 to Fourier series by MATLAB , and drew the discrete spectrum and plot the patterns after different sub harmonics are superimposed. Through the observation of each image, deepen the understanding of the Fourier transform and signal decomposition and synthesis.关键词:矩形信号傅里叶级数谐波叠加分解与合成Keywords: Squarewave signal.Fourier series.Harmonic superposition. Decomposition and synthesis一、设计目的和要求本设计主要利用MATLAB绘制信号的离散幅度谱和各次谐波叠加后的波形,通过观察谐波展开次数增加后的波形,进一步掌握信号分解与合成的原理。
培养运用所学知识分析解决问题的能力。
掌握用MATLAB实现通信系统仿真实验的能力。
这里要做一个信号的分解与合成的仿真系统,利用matlab软件的仿真模拟能力来体现信号的分解与合成过程中出现的情况。
MATLAB(矩阵实验室)是MATrix LABoratory的缩写,是一款由美国The MathWorks公司出品的商业数学软件。
MATLAB是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。
Matlab中常⽤的信号处理函数--收藏笔记常⽤的信号处理函数1、常⽤信号产⽣函数(1)随机信号函数:rand(1,N)和randn(1,N)。
前者产⽣长度N的在[0,1]上均匀分布的随机序列;后者产⽣均值为0,⽅差为1的⾼斯随机序列。
其他分布特性可由这两种变换产⽣(2)⽅波信号函数:square(T)和square(T,DUTY)。
产⽣时间变量T对应周期2PI,幅值为正负1的⽅波。
(3)锯齿波信号函数:sawtooth(T)和sawtooth(T,WIDTH)。
前者产⽣变量T对应于周期2PI,幅值为正负1的锯齿波;后者WIDTH参数指定三⾓波的尺度值,取值0-1,当取0.5,产⽣对称的三⾓波信号,当取1时,产⽣锯齿波信号。
(4)正弦波信号函数:sin,asin、sinh,asinh等2、常⽤信号分析处理函数(1)滤波函数:filter(b,a,x)。
x为输⼊序列,b为对应输⼊序列前M个状态的系数,a为输出前N个状态的系数。
(2)单位抽样响应函数:impz(b,a,p)和h=impz(b,a,p)。
前⼀种直接绘图,后⼀种存⼊变量h中,且不绘图,通过stem画图。
(3)频率响应函数:freqz(b,a,n,Fs)和[h,f]=freqz(b,a,n,Fs).b,a系统函数向量,Fs采样频率,n为[0,Fs/2]范围内计算的频率点数量。
(4)零机电增益函数:root函数计算系统的零极点,zplane函数画出系统的零极点图。
(5)快速傅⾥叶变换:y=fft(x,n)、ifft。
Matlab与Quartus、ISE的数据交换⽅法有三:1、由Matlab软件仿真设计出的系统参数直接在FPGA中实现;2、⽤于仿真测试过程中,由Matlab产⽣所需的测试数据并存储在数据⽂件中,由quartus读取病输出结果到另⼀⽂件中,再判断;3、由matlab设计出相应额数字信号处理系统,并在Matlab中直接转化为VHDL或Verilog。
Matlab产生控制信号的方法1 sawtooth功能:产生锯齿波或三角波。
格式:x = sawtooth(t)x = sawtooth(t,width)说明:sawtooth(t)类似于sin(t),产生周期为2π,幅值从-1到+1的锯齿波。
在2π的整数倍处,值为-1,从-1到+1这一段波形的斜率为1/π。
sawtooth(t,width)产生三角波。
举例:产生周期为0.02的三角波,结果见图1.1.3。
Fs = 10000;t = 0:1/Fs:1.5;x = sawtooth(2*pi*50*t);plot(t,x), axis([0 0.2 -1 1])2 square功能:产生方波。
格式:x = square(t)x = square(t,duty)说明:square(t)产生周期为2π,幅值为±1的方波。
square(t,duty)产生指定周期的方波,duty为正半周期的比例3 sinc功能:产生Sinc或sin(πt)/ πt函数波形。
格式:y = sinc(x)说明:sinc(x)用于计算sinc函数,即Sinc函数之所以重要,是因为它的傅立叶变换正好是幅值为1的矩形脉冲。
4 chirp功能:产生调频余弦信号。
格式:y = chirp(t,f0,t1,f1)y = chirp(t,f0,t1,f1,'method')y = chirp(t,f0,t1,f1,'method',phi)说明:chirp函数产生调频余弦信号,即信号的频率随时间的增长而变化。
这种变化可以是线性的,也可以是非线性的。
y = chirp(t,f0,t1,f1) 产生调频余弦信号y,t为时间轴。
在t = 0时,信号的频率为f0,在t = t1时,信号的频率为f1,此处频率的单位为Hz。
信号的频率随时间作线性变化。
y = chirp(t,f0,t1,f1,'method')通过method参数设置频率随时间变化的方式chirp(t,f0,t1,f1,'method')通过method参数设置频率随时间变化的方式5 pulstran功能:产生重复冲激串。
m a t l新编周期方波信号内部编号:(YUUT-TBBY-MMUT-URRUY-UOOY-DBUYI-0128)m a t l a b周期方波信号(一)周期离散方波信号频域分析与周期模拟信号一样,周期离散信号同样可以展开成傅里叶级数形式,并得到离散傅里叶级数(DFS)X(XX)=1X∑X(X)X−XXΩn X=0,1,2,…,X−1X2X=−X2上式可以看成周期离散信号x(n)的离散傅里叶级数展开。
X(X)=∑X(XX)X XXXXX−1X=0上式是DFS的反变换,记作IDFS并且称X(kΩ)与x(n)构成一对离散傅里叶级数变换对。
(以上两式中Ω=2π/N)在MTALAB中,DFS通过建立周期延拓函数语句实现:function Xk=DFS(n,x,N)if N>length(x)n=0:N-1;x=[x zeros(1,N-length(x))];endk=0:N-1;WN=exp(-j*2*pi/N);nk=n'*k;WNnk=WN.^nk;Xk=x*WNnk;end建立一个离散非周期方波信号x (X )=X X (X )={1,0≤X ≤X −10,其他X 4(X )通过周期延拓后所得的周期序列利用DFS 计算实现代码如下:clear all;close all;clc;n=0:3;x=ones(1,4);X=fft(x,1024);Xk1=DFS(n,x,4);Xk2=DFS(n,x,8);figure(1);plot((-1023:2048)/2048*8,[abs(X) abs(X) abs(X)],'--');hold on;stem(-4:7,[abs(Xk1) abs(Xk1) abs(Xk1)],'LineWidth',2);grid;figure(2);plot((-1023:2048)/2048*16,[abs(X) abs(X) abs(X)],'--');hold on;stem(-8:15,[abs(Xk2) abs(Xk2) abs(Xk2)],'LineWidth',2);grid;set(gcf,'color','w');运行后得到的是分别以4和8为周期延拓后的X 4(X )频谱:即第一幅图表示的是周期序列 x (X )=1 −∞<X <+∞ 的频谱,第二幅图表示的是周期序列x (X )={1,4X ≤X ≤4+4X 0,4X −4<X <4X的频谱。
两图中的包络线表示的是通过快速傅里叶变换(FFT )所得到的频谱线。
(二)非周期离散方波信号频域分析对于非周期离散方波信号,可采用离散时间傅里叶变换DTFT 进行分析。
X(X)=∑X(X)+∞X=−∞X−XXX上式为离散时间信号x(n)的离散时间傅里叶变换(DTFT)。
X(X)=12X∫X(X)X XXX XX 2X上式为X(X)的离散时间傅里叶反变换(IDTFT)。
由于:∑|X(X)|<+∞+∞X=−∞所以序列x(n)绝对可和,意味着DTFT存在,而非稳定序列(比如周期序列)不满足绝对可和条件,所以其DTFT不存在。
在MTALAB中,DTFT可以用以下语句实现:w=-3*pi::3*pi;K=length(w);X=x*exp(-j*n'*w*K);建立一个离散非周期方波信号x(X)=X X(X)={1,0≤X≤X−1 0,其他X8(X)的离散傅里叶变换X(e jω)利用DTFT计算实现代码如下:clear all;close all;clc;n=0:7;x=ones(1,8);w=-3*pi::3*pi;X=x*exp(-j*n'*w);figure(1);plot(w/pi,abs(X));grid;figure(2);plot(w/pi,angle(X));grid;set(gcf,'color','w');运行后分别得到该离散非周期方波信号的幅频特性与相频特性:幅频特性相频特性(三)两种变换DFS的DTFT的性质DFS主要具有如下性质:1.线性性质2.周期卷积性质3.复共轭4.帕斯瓦尔定理DTFT同连续时间信号傅里叶变换相似,具有如下性质:1.线性性质2.时域频域平移性质3.时间翻转性质4.共轭对称性质5.时域频域卷积性质6.调制性质7.频域微分性质8.帕斯瓦尔定理从DTFT的推导过程,说明DTFT是DFS当N→∞的极限情况。
共同点:在时域都是离散的,在频域都是以2π为周期,周而复始。
不同点:离散时间周期信号频谱是离散的,具有谐波性,X(kΩ)是谐波复振幅,适用于计算机计算。
而离散时间非周期信号的频谱则是连续的,不具有谐波性,X(X)表示的是谐波密度,是连续变量Ω的函数,所以不便于计算机进行分析计算。
(四)离散傅里叶变换(DFT)由于DTFT不便于计算机进行计算,所以需要建立一种时域和频域都是离散的傅里叶变换对,这就是离散傅里叶变换(DFT)X(X)=∑X(X)X−1X=0X−XXXX X=0,1,2,…,X−1上式为离散时间非周期信号的离散傅里叶变换(DFT)X(X)=1X∑X(X)X XXXX X=0,1,2,…,X−1 X−1X=0上式为DFT的反变换,记作IDFT。
X(X)和X(X)称为离散傅里叶变换(DFT)对。
在MTALAB中,DFT通过建立函数实现:function Xk=DFT(n,x,N)if N>length(x)n=0:N-1;x=[x zeros(1,N-length(x))];endk=0:N-1;WN=exp(-j*2*pi/N);nk=n'*k;WNnk=WN.^nk;Xk=x*WNnk;End建立一个离散非周期方波信号x(X)=X X(X)={1,0≤X≤X−1 0,其他X8(X)的离散傅里叶变换X(e jω)利用DFT计算实现代码如下:clear all;close all;clc;n=0:7;x=ones(1,8);X=fft(x,1024);Xk2=DFT(n,x,16);figure(1);plot((-1023:2048)/2048*32,[abs(X) abs(X) abs(X)],'--');hold on;stem(-16:31,[abs(Xk2) abs(Xk2) abs(Xk2)],'LineWidth',2);grid;figure(2);plot((-1023:2048)/2048*32,[angle(X) angle(X) angle(X)],'--');hold on; stem(-16:31,[angle(Xk2) angle(Xk2) angle(Xk2)],'LineWidth',2);grid; set(gcf,'color','w');运行后分别得到该离散非周期方波信号的幅频特性与相频特性:幅频特性相频特性两图中的包络线表示的是通过快速傅里叶变换(FFT)所得到的频谱线。
离散傅里叶变换是傅里叶变换在时域、频域均离散化的形式,因而与其他傅里叶变换有着相似的性质。
但是它又是从傅里叶级数派生而来的,所以又具有一些与其他傅里叶变换不同的特性,最主要的是圆周位移性质和圆周卷积性质。
一、快速傅里叶变换(FFT)快速傅里叶变换,简称FFT,是计算DFT的快速算法,习惯上是指以库利和图基算法为基础的一类高效算法。
根据快速傅里叶变换基本思路以及基2FFT算法,在MTALAB中,FFT通过建立函数实现:function y=fft(x)m=nextpow2(x);N=2^m;if length(x)<Nx=[x,zeros(1,N-length(x))];endnxd=bin2dec(fliplr(dec2bin([1:N]-1,m)))+1;y=x(nxd);for mm=1:mNmr=2^mm;u=1;WN=exp(-i*2*pi/Nmr);for j=1:Nmr/2for k=j:Nmr:Nkp=k+Nmr/2;t=y(kp)*u;y(kp)=y(k)-t; y(k)=y(k)+t; endu=u*WN;endend建立一个离散非周期方波信号x(X)=X X(X)={1,0≤X≤X−1 0,其他X8(X)的快速傅里叶变换利用FFT计算实现代码如下:clear all;close all;clc;x=ones(1,8);fx=fft(x,512);z=abs(fx);k=0:length(z)-1;plot(k,z);运行后得到该离散非周期方波信号的幅频特性:分别利用FFT和DFT进行相同运算:clear all;close all;clc;K=input('K=');N=2^K;n=0:N-1;x=randn(1,2^K);tic,X=fft(x,N),toctic,X=DFT(n,x,N),toc运行结果如下:Columns 1 through 4069Elapsed time is seconds.Columns 1 through 4069Elapsed time is seconds.由此可见,采用DFT计算时间为秒,而采用FFT计算只需要秒;说明,FFT在计算速度上,明显优于其他算法。
三、采样定理(一)时域采样定理为了验证时域采样定理,可以把原始采样序列每隔D-1点取一个值,形成一个新的序列。
在MATLAB中,通过以下程序实现:clear all;close all;clc;x=ones(1,8);D=2;xd=x(1:D:length(x));fx=fft(x,512);fxd=fft(xd,512);z=abs(fx);s=abs(fxd);k=0:length(z)-1;plot(k,s,k,z);D=2时得到的原始序列与采样序列的幅频特性(蓝色为原始序列,绿色为采样序列)。
D=3时得到的原始序列与采样序列的幅频特性(蓝色为原始序列,绿色为采样序列)。
D=4时得到的原始序列与采样序列的幅频特性(蓝色为原始序列,绿色为采样序列)。
D=时得到的原始序列与采样序列的幅频特性(蓝色为原始序列,绿色为采样序列)。
由此可见,采样周期在D大于2的范围内,出现明显的混叠现象,有失真产生,而在小于1的范围内,采样过于密集,增加运算系统负担。
因此,可验证时域采样定理。
(二)频域采样定理为了验证频域采样定理,可以把原始采样序列每隔D-1点取一个值,形成一个新的序列。
在MATLAB中,通过以下程序实现:clear all;close all;clc;x=-10::10;y=(sin(x))/x;X=fft(y,20);D=7;Xd=X(1:D:length(X));fxd=ifft(Xd,20);s=fxd;k=0:length(s)-1;plot(k,s);D=7时根据频域样本集合恢复的原信号D=3时根据频域样本集合恢复的原信号D=10时根据频域样本集合恢复的原信号由此可见,采样周期在D小于7的范围内,根据频域样本恢复的原信号与实际原信号有很大差别。