第7章 周期信号频域分析及 MATLAB 实现
信号的频谱分析及MATLAB实现

信号的频谱分析及MATLAB实现频谱分析是对信号的频率特性进行研究和分析的方法,可以帮助我们了解信号中不同频率成分的强度和分布情况。
MATLAB是一款功能强大的数学计算和数据处理软件,具有丰富的信号处理工具箱,可以方便地进行频谱分析。
频谱分析的基本原理是将时域信号转换为频域信号,即将信号从时域表示转换为频域表示。
在频域表示中,信号的幅度和相位都可以很直观地观察和分析。
频谱分析的第一步是对信号进行采样和离散化,得到离散时间序列信号。
可以使用MATLAB中的信号处理函数进行采样和离散化的操作。
例如,可以使用"audioread"函数读取音频文件,并使用"fft"函数对信号进行快速傅里叶变换。
接下来,可以使用MATLAB提供的"fftshift"函数对离散频谱进行平移操作,使得频谱的零频率分量位于频谱中心。
然后,可以计算频谱的幅度谱和相位谱,并使用"abs"和"angle"函数提取幅度和相位信息。
除了基本的频谱分析方法外,MATLAB还提供了更高级的频谱分析工具,如功率谱密度估计和滤波器设计等。
使用这些工具,可以更准确地估计信号的频谱特性,并对信号进行滤波和频谱修正等处理。
总结起来,频谱分析是对信号频率特性进行研究的重要方法,MATLAB提供了丰富的工具和函数,便于实现频谱分析的各个步骤。
通过对信号频谱的分析,可以更深入地了解信号的特性和结构,为信号处理和相关研究提供有力支持。
(注:由于所给的字数限制,以上内容只是对频谱分析及MATLAB实现的简要介绍。
「信号的频域分析及MATLAB实现」

「信号的频域分析及MATLAB实现」信号是以时间为自变量的函数,因此,我们可以通过对信号进行时间域分析来了解其在时间上的行为。
然而,信号也可以通过频域分析来揭示其在频率上的特性。
频域分析是指将信号从时间域转换到频率域的过程,可以帮助我们理解信号中包含的频率成分以及它们在信号中的占比。
频域分析有多种方法,其中最常用的是傅里叶变换。
傅里叶变换将信号分解为一系列的正弦和余弦函数(即频率成分),每个正弦和余弦函数都有不同的频率和振幅。
这些频率成分的振幅表示了信号中该频率的强度。
MATLAB是一种常用的科学计算和数据可视化软件,它提供了许多函数和工具箱来进行信号处理和频域分析。
下面我们将介绍如何使用MATLAB实现信号的频域分析。
首先,我们需要导入信号数据到MATLAB中。
假设我们有一个1000点的时间序列信号,我们可以将其存储为一个向量。
```matlabt=0:0.01:9.99;%时间序列x = sin(2*pi*1*t) + sin(2*pi*2*t) + sin(2*pi*5*t); % 信号数据```接下来,我们可以使用MATLAB的傅里叶变换函数fft来计算信号的频域表示。
频域表示是一个复数向量,其中包含了信号的频率成分和振幅。
```matlabX = fft(x); % 计算信号的频域表示```根据傅里叶变换的性质,我们可以使用MATLAB的fftshift函数将频域表示转换为以零频率为中心的频谱图。
```matlabX_shifted = fftshift(X); % 将频域表示进行平移```为了可视化频谱图,我们可以使用MATLAB的plot函数绘制频率和振幅之间的关系。
```matlabN = length(X_shifted); % 频域表示的长度f=(-N/2:N/2-1)/(N*0.01);%频率向量plot(f, abs(X_shifted)); % 绘制频谱图```通过上述步骤,我们可以实现信号的频域分析,并通过频谱图来了解信号的频率成分和它们在信号中的贡献。
第7章 MATLAB控制系统频域分析

计算系统的频率特性的方法
• 建模
• 已知传递函数模型 num=[0.5];den=[1 2 1 0.5]; w=0.01:0.01:1000; Gwnum=polyval(num,i*w); Gwden=polyval(den,i*w); Gw=Gwnum./Gwden; • 如果是状态空间模型则可以 Gw=C*inv(i*w*eye(n)-A)*B+D;
Gm =
26.9405
Pm =939
title(['Gm=',num2str(Gm),' Pm=',num2str(Pm)])
7.5 绘制Nichols图
单位负反馈系统的幅相频率特性
G(s)=num/den 用户选择的频率 (可选)
mag=幅值向量 phase=相角向量
第7章 频域分析
参见112页5.4节和262页8.3节
内容
• 绘制Nyquist图 • 绘制Bode图 • 绘制Nichols图 • 分析频率特性性能,如稳定性、稳定裕度 • 计算频域性能指标 • 应用频域法设计校正装置
7.1 控制系统的频率特性
• 设s=j,系统的频域响应可由下式直接求出:
figure(1);sys=tf(k0*n1,d1); bode(sys) [Gm0,Pm0,wcg0,wcp0]=margin(k0*n1,d1) hold on Gm0 = 1.0100 Pm0 = 0.0584 wcg0 = 100.0000 wcp0 = 99.4863 figure(2); sysc=feedback(sys,1); step(sysc)
pole
5.画出校正后的系统Bode图,校验系统性能指标 6.使系统构成闭环,验证闭环系统的响应
基于Matlab对信号进行频域分析的方法

基于Matlab对信号进行频域分析的方法Matlab可以说是一个非常有用且功能齐全的工具,在通信、自控、金融等方面有广泛的应用。
本文讨论使用Matlab对信号进行频域分析的方法。
说到频域,不可避免的会提到傅里叶变换,傅里叶变换提供了一个将信号从时域转变到频域的方法。
之所以要有信号的频域分析,是因为很多信号在时域不明显的特征可以在频域下得到很好的展现,可以更加容易的进行分析和处理。
FFTMatlab提供的傅里叶变换的函数是FFT,中文名叫做快速傅里叶变换。
快速傅里叶变换的提出是伟大的,使得处理器处理数字信号的能力大大提升,也使我们生活向数字化迈了一大步。
接下来就谈谈如何使用这个函数。
fft使用很简单,但是一般信号都有x和y两个向量,而fft只会处理y向量,所以想让频域分析变得有意义,那么就需要用户自己处理x向量一个简单的例子从一个简单正弦信号开始吧,正弦信号定义为:我们现在通过以下代码在Matlab中画出这个正弦曲线fo = 4; %frequency of the sine waveFs = 100; %sampling rateTs = 1/Fs; %sampling time intervalt = 0:Ts:1-Ts; %sampling periodn = length(t); %number of samplesy = 2*sin(2*pi*fo*t); %the sine curve%plot the cosine curve in the TIme domainsinePlot = figure;plot(t,y)xlabel(‘TIme (seconds)’)ylabel(‘y(t)’)TItle(‘Sample Sine Wave’)grid这就是我们得到的:当我们对这条曲线fft时,我们希望在频域得到以下频谱(基于傅里叶变换理论,我们希望看见一个幅值为1的峰值在-4Hz处,另一个在+4Hz处)使用FFT命令我们知道目标是什么了,那么现在使用Matlab的内建的FFT函数来重新生成频谱%plot the frequency spectrum using the MATLAB fft commandmatlabFFT = figure; %create a new figureYfreqDomain = fft(y); %take the fft of our sin wave,y (t)stem(abs(YfreqDomain)); %use abs command to get the magnitude%similary,we would use angle command to get the phase plot!%we‘ll discuss phase in another post though!xlabel(’Sample Number‘)ylabel(’Amplitude‘)TItle(’Using the Matlab fft command‘)gridaxis([0,100,0,120])效果如下:但是注意一下,这并不是我们真正想要的,有一些信息是缺失的x轴本来应该给我们提供频率信息,但是你能读出频率吗?幅度都是100没有让频谱中心为为FFT定义一个函数来获取双边频谱以下代码可以简化获取双边频谱的过程,复制并保存到你的.m文件中function [X,freq]=centeredFFT(x,Fs)%this is a custom function that helps in plotting the two-sided spectrum%x is the signal that is to be transformed%Fs is the sampling rateN=length(x);%this part of the code generates that frequency axisif mod(N,2)==0k=-N/2:N/2-1; % N evenelsek=-(N-1)/2:(N-1)/2; % N oddendT=N/Fs;freq=k/T; %the frequency axis%takes the fft of the signal,and adjusts the amplitude accordinglyX=fft(x)/N; % normalize the dataX=fftshift(X); %shifts the fft data so that it is centered这个函数输出正确的频域范围和变换后的信号,它需要输入需要变换的信号和采样率。
信号的频域特性分析及MATLAB实现

长沙理工大学上机实验报告班级通信1401班学号201454080136姓名胡国庆实验目的:1、掌握利用MATLAB对连续信号进行傅里叶变换2、学会应用MATLAB对常用信号进行频域特性分析3、掌握利用MATLAB对信号进行频域的可视化的方法实验要求:1、利用MATLAB完成P129页周期矩形脉冲信号的频谱图,τ=2,τ/T分别取1/4,1/16和1/64;(利用4.3-3结论绘制频谱图)2、利用MATLAB绘制习题P205,4.26的频谱图。
实验内容和步骤:(程序和必要的注释)P129,周期矩形脉冲信号的频谱图n=-40:40;t=-10:0.01:10;%(t/T=1/4)f1=1/4*sinc(1/4*pi*n);subplot(2,2,1);stem(n,f1,'r');title('t/T=1/4的频谱图');xlabel('w');ylabel('f');%(t/T=1/4)f2=1/16*sinc(1/16*pi*n);subplot(2,2,2);stem(n,f2,'b');title('t/T=1/16的频谱图');xlabel('w');ylabel('f');%(t/T=1/64)f3=1/64*sinc(1/4*pi*n);subplot(2,2,3);stem(n,f3,'k');title('t/T=1/64的频谱图');xlabel('w');ylabel('f');P206 4.26y=inline('abs(t)<=1.*(1/2).*(1+cos(pi.*t)).*exp(-j*w*t)');w=linspace(-6*pi,6*pi,200*pi);n=length(w);g=zeros(1,n);for k=1:ng(k)=quadl(y,-1,1,[],[],w(k));endsubplot(2,2,4);plot(w,abs(g));xlabel('w');ylabel('f');实验结果及分析:P129,周期矩形脉冲信号的频谱图实验分析:因为幅度Fn的函数为sin(w pi)类型,所以当w相同时,零点都是相同的,所以不管占空比为多少,以上三个图的零点都一样。
连续时间信号的频域分析及Matlab实现

2. [Px,f] = psd(x,Nfft,Fs,window,noverlap,flag);
Fs = 1000;%被调信号x的采样频率 Fc = 400;%载波信号的载波频率 N = 1000;%FFT的长度
n = 0:N-2;
t = n/Fs; x = sin(2*pi*50*t);%被调信号 subplot(2,2,1);plot(t,x); window = hamming(512); [Pxx,f] = psd(x,1024,Fs,window,256,’none’);%求被调信号的功率谱 subplot(2,2,2);plot(f,Pxx);grid
t = 0:0.01:T; f = cell(1,Nf); f{1} = symA(1)/2 + symA(2)*cos(2*pi*t/5)+symB(2)*sin(2*pi*t/5);%基波 subplot(2,1,1) plot(t,f{1}) hold on axis([-5,5,-0.5,1.5]); e1 = sign(t+tao/2); e2 = sign(t-tao/2); y = h.*(e1-e2)/2;
2 0 -5
-4
-3
-2
-1
0
1
2
3
4
5
连续时间信号的傅里叶变换
傅里叶变换 绝对可积条件
F
j f t e j t d t
f t dt
j t
傅里叶逆变换 f
Matlab函数
1.Fourier变换
t F j e
function [A_sym,B_sym] = CTF2()
创新学分实验1_连续周期信号频谱分析的MATLAB算法实现

连续周期信号频谱分析的MATLAB 算法实现一 引言在上一章中介绍了四种不同类型信号的频谱变化规律,在这一章将具体研究其中的一种,即连续周期信号。
在从理论上掌握其频谱变化规律的基础上,我们将分带宽有限的连续周期信号和带宽无限的连续周期信号两个方面着重讨论如何应用离散傅里叶变换DFT 对其频谱进行分析,分别针对具体实例,通过MATLAB 编程采用FFT 算法实现对其频谱的计算,并和理论值比较,作了相应的误差分析。
二 时域采样定理根据下列关系式所构成的连续时间傅里叶级数对CTFS ,即∑∞∞-=tjk ek X t x 0)()(0ωω ⎰--=220000)(1)(T T tjk dt et x T k X ωω 1从理论上可求得:连续周期信号的频谱)(0ωk X 是非周期离散的频谱。
由于在时域信号是连续的,尚须对其作离散化处理(即采样)后才能利用DFT 进行分析。
对采样过程而言,如果不能恰当地确定采样间隔或采样点数,势必产生混叠误差。
例如,在时域欠取样情况下将出现频谱混叠而无法恢复原信号频谱,因而不能从时域样点准确地重建原来的连续信号,以至在严重情况下会得到错误的计算结果。
采样定理为采样后能否恢复原信号提供了理论依据。
对于连续周期信号的频谱分析,我们需要用到时域采样定理,即: 一个频谱在区间 ),(m m ωω-以外为零的频带有限信号)(t f ,可唯一地由其在均匀间隔⎪⎪⎭⎫⎝⎛<m s s f T T 21上的样点值)(s nT f 确定。
在严格满足取样定理并恰当选取采样间隔T 和采样点数N 的情况下,用DFT 求得的离散频谱值等于原来的连续周期信号离散频谱)(0ωk X 的准确值;否则,将求得)(0ωk X 的近似值。
三 带宽有限的连续周期信号的频谱分析3.1 实现方法与求解步骤设待分析的连续周期信号x(t)的表达式已知,通过分析可求得最高频率m f ,根据采样定理,采样速率要满足00,22f kf f f m s =≥为基频,k 为最高谐波次数。
MATLAB周期信号的频谱分析

11
EE of BUPT
12
figure(1); plot(t,y); grid; line([0,pi+0.5],[1,1]); text(pi+0.5,1,'1'); figure(2); halft=ceil(length(t)/2); mesh(t(1:halft),[1:(K+1)/2],y(:,1:halft)); max_y=max(y((K+1)/2,:)); gibbs=(max_y-1)/2
直流分量 余弦分量的幅度 正弦分量的幅度
a0
1 T1
t0 T1 f (t ) d t
t0
2
an T1
t0 T1 t0
f (t)cos
n1t
dt
2
bn T1
t0 T1 tTLAB在信号与系统课程中的应用
EE of BUPT
余弦形式
5
f (t ) a0 an cos n1t bn sin n1t 1 n1
f (t ) c0 cn cos n1t n
2
n1
c0 cn cosn1t cos n sinn1t sin n
n1
a0 : 直流,平均值
n 1 基波 (fundament al signal)
有的文献上也称为1 次谐波
n
n次谐波 (harmonic signal)
MATLAB在信号与系统课程中的应用
MATLAB在信号与系统课程中的应用
EE of BUPT
8
help pause
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2
7.1 周期信号的傅里叶级数与信号的频谱
西华师范大学 物理与电子信息学院
傅里叶系数:
2 2 a0 f (t )dt T1 0 T1
T1
T1 2 T1 2
f (t )dt
2 T1 an f (t ) cos ntdt T1 0
2 T1 bn f (t )sin ntdt T1 0
X =[0 1 2 3 4 5 6 7 >> fftshift(X) ans =[7 9 10 11 12 13 14
7
0
9 10 11 12 13 14]
1 2 3 4 5 6 7]
21
7.2 Matlab分析周期信号的频谱
西华师范大学 物理与电子信息学院
例7.2 用fft分析淹没在噪声中的50Hz和150H在信号
各阶傅里叶系数 an,bn Fn An φn
函数 CTFShchsym.m
绘制频谱图
17
7.2 Matlab分析周期信号的频谱
西华师范大学 物理与电子信息学院
1. 编写函数文件 子函数 y=time_fun_s(t),表示出信号在一个周期内的符号表达式 2. 傅里叶复指数系数及绘制频谱图 1) 调用函数 time_fun_s(t),获取周期信号的符号表达式;
China West Normal University
西华师范大学
第七章 信号频域分析及 MATLAB 实现
7.1 周期信号的傅利叶级数与信号的频谱 7.2 周期信号的频谱分析及MATLAB实现 7.3 用MATLAB分析典型周期信号的频谱
1
7.1 周期信号的傅里叶级数与信号的频谱
西华师范大学 物理与电子信息学院
n
2
2
1 1 2 2 Fn An an bn 2 2
bn n arctan an
15
7.2 Matlab分析周期信号的频谱
西华师范大学 物理与电子信息学院
思路:利用CTFShchsym.m先求出周期信号的傅里叶系数, 再利用系数关系求An,Fn,φn。
1 1 1 1 jn j n F n An e an jbn F n An e an jbn 2 2 2 2
2)求出信号的三角级数形式的傅里叶系数 an和bn 。
3)求出信号的复指数形式的傅里叶级数展开系数Fn 。 4)绘制Fn的振幅频谱图。 5)利用y的符号表达式绘制信号3个周期的波形图
18
7.2 Matlab分析周期信号的频谱
西华师范大学 物理与电子信息学院
7.2.4
用FFT实现周期信号的频谱分析
各阶傅里叶级数
截断傅里叶级数 近似原信号
8
7.2 Matlab分析周期信号的频谱
西华师范大学 物理与电子信息学院
7.2.2 单边频谱分析
A0 f (t ) An cos(nt n ) 2 n1 A0 a0 a0 A0 2 2 An an bn an
bn
bn n arctan an
1 1 2 2 Fn An an bn 2 2
bn n arctan an
2 T
16
7.2 Matlab分析周期信号的频谱
西华师范大学 物理与电子信息学院
程序流程:
函数 x=time_fun_x(t) 函数 y=time_fun_e(t)
表达周 期函数 绘制周 期函数
10
7.2 Matlab分析周期信号的频谱
西华师范大学 物理与电子信息学院
2. 绘制函数图
figure(3) Syms t; T=4; [y,tao]=SqureWaves(t,T); yn=subs(y,t,t-T)+y+subs(y,t,t+T); %定义有原函数3个周期的函数 ezplot(yn,[-1.5*T 1.5*T]);
3. Matlab命令
DTFS:
a
1 fft ( x ) N
(7.16) (7.17)
IDTFS :
x N * ifft (a)
二、用 FFT 计算CTFS 将原函数在一个周期内离散化,即用向量表达。再利用上述3 的命令即可。
20
7.2 Matlab分析周期信号的频谱
西华师范大学 物理与电子信息学院
N 1
j 2 N nk
, n 0,1, N 1
(7.12)
DTFS:
1 N 1 j 2 N nk ak x n e , k 0,1, N 1 (7.13) N n 0
19
7.2 Matlab分析周期信号的频谱
西华师范大学 物理与电子信息学院
三、用 FFT 实现周期信号的频谱分析
向量形式的函数文件
向量表示 周期函数
fft()计算傅里叶系数 调整傅里叶级数
Y = fft(X,n) returns the n-point DFT.
离散化周 期函数
绘图
Y = fftshift(X) rearranges the outputs of fft, fft2, and fftn by moving the zerofrequency component to the center of the array. It is useful for visualizing a Fourier transform with the zero-frequency component in the middle of the spectrum.
3. 调用m文件 SquarePulse_CTFS. m求傅里叶系 数 分析SquarePulse.m
R=vpa(A,d)利用可变精度计算方法以d位小数点精度去计算A中的每个元 素,每个输出元素是符号表达式 R=double(A)把A转换为双精度浮点数。
11
7.2 Matlab分析周期信号的频谱
西华师范大学 物理与电子信息学院
7
7.2 Matlab分析周期信号的频谱
西华师范大学 物理与电子信息学院
7.2.1 频谱分析流程
分解:各阶傅里叶系数+各阶谐波 综合:用截断傅里叶级数来近似原信号
函数 x=time_fun_x(t)
表达周 期函数 绘制周 期函数
各阶傅里叶系数
函数
SquarePulse_C TFS.m
Hale Waihona Puke 函数 y=time_fun_e(t)
例题的理论推算 T=4 s, tao=1 s 2 T2 an T 2 f t cos nt dt T 2 sin n 4 n
2sin n 4 An n
a0=0.5, bn=0
a0 A0 F0 0.25 2
A5 ≈ 0.09, A10 ≈ 0.063
如何利用快速 Fourier 变换 FFT对连续时间 Fourier 级数 CTFS 展开进行数值计算。 CTFS Fourier 级数 一、用 FFT 计算DTFS DTFS 1. 理论:周期为 N 的离散序列 x(n)),其 DTFS 综合和分析公式
x(n) ak e IDTFS:
k 0
7.1.1 连续时间周期信号的傅利叶级数——CTFS 1. 连续时间周期信号的解
f (t ) f (t mT ) m 0 , 1 , 2 ,
1)三角形式的傅里叶级数
a0 f (t ) a1 cos t a2 cos 2t 2 2 T b1 sin t b2 sin 2t a0 an cos nt bn sin nt 2 n 1
12
7.2 Matlab分析周期信号的频谱
西华师范大学 物理与电子信息学院
调用SquarePulse计算傅里叶系数
13
7.2 Matlab分析周期信号的频谱
西华师范大学 物理与电子信息学院
原函数的各阶截断傅里叶级数
调用JieD_CTFS.m
14
7.2 Matlab分析周期信号的频谱
西华师范大学 物理与电子信息学院
7.2.3 双边频谱
周期信号可以分解成一系列虚指数信号之和,并可以求得 相应的傅里叶系数
f (t )
n
Fe
n
jnt
a0 an jbn jnt an jbn jnt e e 2 n 1 2 2 1 1 j Fn An e an jbn
双边频谱
5
7.1 周期信号的傅里叶级数与信号的频谱
西华师范大学 物理与电子信息学院
3) 形式 系 数 展 开 关 式 系
三角函数形式
a0 f t an cos nt bn sin nt 2 n 1 A0 An cos nt n 2 n 1
指数形式
f t
n
Fn e jnt
2 an T
系 数
T
f t cos(nt )dt ,
0
n 0,1, 2
T
1 Fn f t e jnt dt , T0 n 0, 1, 2
T
a jbn a jbn 2 Fn n , F n n bn f t sin(nt )dt , n 1, 2 2 2 T 0 b n n arctan n bn 2 2 an An an bn , n arctan an
7-2b
bn An sin n
单边频谱
4
7.1 周期信号的傅里叶级数与信号的频谱
西华师范大学 物理与电子信息学院
2)指数形式的傅里叶级数