啁啾信号–Matlab和Python中的FFT和PSD

重点关注点:知道如何生成Chirp信号,在Matlab和Python中使用FFT和功率谱密度(PSD)计算其傅里叶变换。

本文是以下书籍的一部分
使用Matlab进行数字调制:从头开始建立仿真模型,国际标准图书编号:978-1521493885
使用Python的数字调制国际标准图书编号:978-1712321638
Matlab中的无线通信系统国际标准图书编号:979-8648350779
所有书籍都有电子书(PDF)和平装本格式

介绍

到目前为止讨论的所有信号的频率都不会随时间变化。获取时变频率的信号是这里的重点。频率随时间变化的信号称为“chirp”。啁啾信号的频率可以从低频变为高频(up-chirp)或从高频变为低频(low chirp)。

观察

啁啾信号/特征在雷达、声纳、扩频、光通信、图像处理、多普勒效应、钟摆运动、引力波、调频(FM)、回波定位等许多应用中都会遇到[1]等。

数学描述:

线性啁啾信号线性地将频率从低频扫到高频(或vice-versa)。产生啁啾信号的一种方法是将一系列正弦波分段串联起来,每个正弦波段的频率依次递增(或递减)。这种方法由于每个这样的分段的相位失配,在啁啾信号中引入了不连续性。修改正弦方程以产生啁啾信号是一种更好的方法。

产生振幅正弦(此处为余弦)信号的方程式A类,角频率\欧米伽0和初始阶段\φ

x(t)=A cos(\omega_0 t+\phi)\quad\quad(1)

这可以写成瞬时相位的函数

x(t)=A cos(θ(t)

哪里\θ(t)=\ω_0 t+\φ是正弦曲线的瞬时相位,它是线性时间.瞬时相位的时间导数\θ(t)等于角频率\欧米茄正弦曲线-在上述等式中为常数。

\ω_0=\frac{d}{dt}\θ(t)\ quad \ quad(3)

不要让相位在时间上呈线性,让我们将相位改为二次型,从而使其呈非线性。

\θ(t)=2\pi\alpha t^2+2\pi f0 t+\phi\quad\quad(4)

对于一些常量\阿尔法.

因此,线性调频信号的方程采用以下形式,

x(t)=A cos(θ(t))=A cos(2\pi\alpha t^2+2\pi f_0 t+\phi)四元(5)

相位的一阶导数,即瞬时角频率成为时间的函数,由下式给出

\ωi(t)=frac{d}{dt}\theta(t)=4\pi\alpha-t+2\pif0\quad\quad(6)

时变频率(赫兹)由下式给出

f2(t)=2\alpha t+f_0\quad\quad(7)

在上述方程中,频率不再是常数,而是具有时变性质,初始频率由第0帧因此,根据上述等式,给定一个持续时间T型,频率变化率由下式给出

k=2\alpha=\frac{f1-f_0}{T}\quad\quad(8)

哪里,第0帧是扫描的起始频率,第1页是持续时间结束时的频率T型.

替换(7)&(8)在里面(6)

\ωi(t)=frac{d}{dt}\theta(t)=2\pi(kt+f0)\quad\quad(9)

发件人(6)(8)

\开始{aligned}\theta(t)&=int\omega_i(t)dt\\&=2\pi\int(kt+f_0)dt=2\pi\ left(k\frac{t^2}{2}+f_0t\right)+\phi_0\\&=2\ pi\left(k\frac}t^2{2}+f_0t/right)+\phi_0=2\pi left(\frac{k}t+f_0\ right)t+\fhi_0\end aligned{4}四(10)

其中\φ0是一个常数,将用作扫描的初始阶段。

因此,产生啁啾信号的修正方程(从方程(5)(10))由提供

x(t)=A cos(θ(t))=A cos(2\pi f(t)t+\phi_0)\quad\quad(11)

其中,时变频率函数由下式给出

f(t)=frac{k}{2}t+f0\quad\quad\quid\quad(12)

Chirp信号的生成,使用FFT和功率谱密度(PSD)在Matlab中计算其傅里叶变换,如需Python代码,请参阅本书使用Python的数字调制.

在不使用Matlab中内置的“线性调频”函数的情况下生成线性调频信号:

使用方程式实现描述啁啾的函数(11)(12)。扫描的起始频率为第0帧以及时间频率第1天第1页.初始阶段\φ0在以下函数中构成参数的最后一部分

函数x=mychirp(t,f0,t1,f1,相位)%Y=mychirp(t,f0,t1,f1)生成线性扫描频率的样本%时基数组t中定义的时间实例的信号。瞬时%时间0时的频率为f0赫兹。瞬时频率f1%在时间t1实现。%参数“phase”是可选的。它定义了%信号以弧度衰减。默认相位=0弧度如果nargin==4相位=0;结束t0=t(1);T=t1-t0;k=(f1-f0)/T;x=cos(2*pi*(k/2*t+f0).*t+相位);结束

下面的包装器脚本使用上述函数,并生成一个具有起始频率的chirpf_0=1Hz在时基开始时f_1=25赫兹t1=1s这是时基的结束。从PSD图可以确定信号能量仅集中在25赫兹

fs=500;%采样频率t=0:1/fs:1;%时基-最多1秒f0=1;%啁啾起始频率f1=fs/20;%t1=1秒时的啁啾频率x=mychirp(t,f0,1,f1);子区(2,2,1)图(t,x,‘k’);标题([“啁啾声信号”]);xlabel(“时间”);ylabel(“振幅”);

FFT和功率谱密度

与前几篇文章中描述的其他信号一样,让我们绘制生成的chirp信号的FFT及其功率谱密度.

L=长度(x);NFFT=1024;X=偏移(fft(X,NFFT));Pxx=X.*conj(X)/(NFFT*NFFT);%具有适当缩放的计算能力f=fs*(-NFFT/2:NFFT/2-1)/NFFT;%频率矢量子区(2,2,2)图(f,abs(X)/(L),‘r’);标题(“FFT幅度”);xlabel(“频率(Hz)”)ylabel(‘震级|X(f)|');xlim([-50 50])Pxx=X.*conj(X)/(NFFT*NFFT);%具有适当缩放的计算能力子区(2,2,3)图(f,10*log10(Pxx),‘r’);标题(“双面-功率谱密度”);xlabel(“频率(Hz)”)ylabel(“功率谱密度-P_{xx}dB/Hz”);xlim([-100 100])X=快速傅里叶变换(X,NFFT);X=X(1:NFFT/2+1);%NFFT/2后抛出样本进行单面打印Pxx=X.*conj(X)/(NFFT*NFFT);f=fs*(0:NFFT/2)/NFFT;%频率矢量子区(2,2,4)图(f,10*log10(Pxx),‘r’);标题(“单面-功率谱密度”);xlabel(“频率(Hz)”)ylabel(“功率谱密度-P_{xx}dB/Hz”);

有关Python代码,请参阅本书使用Python的数字调制
Matlab中的啁啾信号FFT和功率谱密度

对此文章进行评分:可怜的低于平均水平平均很好杰出的(56平均票数:3.71(共5个)

参考文献:

[1]帕特里克·弗兰德林(Patrick Flandrin),《到处唧唧喳喳》,CNRS——里昂师范学院

本章主题

信号处理要点
生成标准测试信号
 □正弦信号
 □方波
 □矩形脉冲
 □高斯脉冲
 □啁啾声信号
解释FFT结果-复杂DFT、频率箱和FFTShift
 □实际和复杂DFT
 □快速傅里叶变换(FFT)
 □解释FFT结果
 □FFT换档
 □IFFTShift(IFFT换档)
从FFT获取幅度和相位信息
 □离散时间域表示
 □用FFT在频域中表示信号
 □从频域样本重构时域信号
功率谱密度
信号的功率和能量
 □信号的能量
 □信号的功率
 □信号分类
 □信号功率的计算-仿真和验证
多项式、卷积和Toeplitz矩阵
 □多项式函数
 □表示单变量多项式函数
 □多项式乘法与线性卷积
 □Toeplitz矩阵与卷积
计算卷积的方法
 □方法1:冲击力法
 □方法2:使用Toeplitz矩阵
 □方法3:使用FFT计算卷积
 □其他方法
解析信号及其应用
 □解析信号与傅里叶变换
 □提取瞬时振幅、相位、频率
 □基于希尔伯特变换的相位解调
选择滤波器:FIR或IIR:理解设计视角
 □设计说明书
 □设计中的一般考虑因素

作者的书籍

Matlab中的无线通信系统
Matlab中的无线通信系统
第二版(PDF)

注意:此帖子中包含评分,请访问此帖子进行评分。
使用Python的数字调制
使用Python的数字调制
(PDF电子书)

注意:此帖子中包含评分,请访问此帖子进行评分。
数字模块使用matlab图书封面
使用Matlab的数字调制
(PDF电子书)

注意:此帖子中包含评分,请访问此帖子进行评分。
人工挑选的通信工程最佳书籍
信号处理最佳书籍

关于“Chirp Signal–Matlab和Python中的FFT和PSD”的24点思考

    • 幅值响应是频率响应与频率的复数值的幅值。
      它用于观察系统如何影响信号中频率的振幅。

      变量的幅度只是相对于其中心位置变化的度量,而变量的幅度是距离或数量的度量,与方向无关。

      答复
  1. 你好Mathuranathan

    图(f,abs(X)/(L),‘r’);

    为什么abs(X)被(L)除?我们不能只写情节(f,abs(X),'r')吗;只有?

    谢谢您。

    答复
  2. 你好Mathuranathan

    很棒的文章,对唧唧声有适当的详细解释!关于PSD,我可以知道为什么你用NFFT两次缩放了震级^2(PSD=X)吗。联合(X)/(NFFTNFFT))?

    答复
  3. 我想在我的问题中补充一点,即等式(6)和等式(8)之间似乎存在差异。你能解释一下这个区别吗?

    答复
  4. 谢谢你Mathuranathan

    我的问题是,我可以将频率值(在第二张图中)乘以比值(1/0.1,这是线性调频信号的振幅对FFt的振幅),然后我们就有了频率加速度图吗?
    当做

    答复
  5. 嘿,好文章。我有一个问题:为什么第二个图的振幅(fft的幅度)不是一?因为你的啁啾信号中的所有频率都有一个振幅?我错过了什么吗

    答复
  6. 你好,Mathuranathan。谢谢你的详细解释。有打字错误吗?公式(2)正确地陈述了“x(t)=Acos(Ɵ(t))”。但紧接着你会说“其中Ɵ(t)=ω0+Ф是瞬时相位,它在时间上是线性的。”看起来好像缺少了一个“t”:我认为它应该是“其中ɧ

    答复
  7. 有人知道在Matlab中生成chirp的方法吗?它遵循自定义多项式,而不是chirp()函数中提供的内置函数?

    chirp()函数是否允许进行比我所知道的更多的定制?

    我想根据以下多项式(在一组数据点上使用polyfit()确定)生成chirp…

    y2=p(1).*x.^10+p(2).*x^9+p;

    答复

发表您的宝贵意见!!!