频谱图
使用加窗傅立叶变换的频谱图。
库::`工程师`
语法
函数调用
* [参数:s],<参数:f>>,<参数:时间>>,<参数:p>>=频谱图(<参数:x>>,<参数:窗口>>,<参数:noverlap>>) —
另外使用参数 [参数:noverlap] 以重叠相邻段。
争论
名称-值输入参数
指定格式中的可选参数对 名称=值,在哪里 姓名 -参数的名称,以及 价值 -适当的值。 类型参数 名称=值 它们应该放在其他参数之后,但对的顺序无关紧要。
#
*财政司司长* —
抽样调查
费率+
1赫兹 (默认情况下)| 正实数
Details
的采样率,设置为正标量。 采样率是单位时间内的样本数。 如果时间单位是秒,那么采样频率以Hz表示。
# *freqrange* — 能谱密度估计的频率范围
+
"onesided" | "twosided"
Details
用于估计能谱密度(PSD)的频率范围,给定为 "onesided" 或 "twosided".
对于具有实数值的信号,默认值为 "onesided". 对于复杂信号,默认值为 "twosided",并指定值 "onesided" 导致错误。
# *光谱类型* — 缩放能谱密度
+
"psd" (默认情况下)| "权力"
Details
能谱密度(PSD)的缩放,定义为 "psd" 或 "权力".
如果未指定频谱类型或指定了值 "psd",则函数返回谱功率密度。
意义 "权力" 将能谱密度的每个估计按等效窗噪声带缩放。 结果是对每个频率处的功率的估计。
# *freqloc* — 频率显示轴
+
"xaxis" (默认)| "雅西斯"
Details
频率显示轴,设置为 "xaxis" 或 "雅西斯".
*价值 "xaxis" -沿轴的频率显示 和轴上的时间 .
*价值 "雅西斯" -沿轴的频率显示 和轴上的时间 .
# *输出时间* — 时间方向
+
"acrosscolumns" (默认情况下)| "downrows"
Details
输出数据的时间方向,设为 "acrosscolumns" 或 "downrows". 将此参数设置为 "downrows" 如果您希望输出参数的时间方向以行显示,频率方向以列显示。 设置值 "acrosscolumns" 如果您希望输出参数的时间方向以列显示,频率方向以行显示。
输出参数
#
*s*是
离散傅里叶
变换+
矩阵
Details
作为矩阵返回的离散傅立叶变换。 时间在矩阵的各列中增加 s,并且频率逐行增加,从零开始。
*如果 [参数:x] -信号长度 ,则矩阵 s 有 列在哪里
** [参数:noverlap] [参数:窗口] [参数:noverlap] 如果 [参数:窗口] -标量;
** [参数:noverlap] 长度(<参数:窗口>>) [参数:noverlap] 如果 [参数:窗口] -矢量。
如果参数 [参数:freqrange] 这很重要 "onesided",然后频谱图输出值 s 在正奈奎斯特范围内并且不保留全功率。
|
# *p* 是能谱密度
+
矩阵
Details
能谱密度(PSD)或作为矩阵返回的功率谱。
*如果 [参数:x] -一个实数,和 [参数:freqrange] 省略或设置为value "onesided" 然后 p 它包含一个单侧修改的PSD周期图或每个段的功率谱。 该函数将功率乘以 2 在除 0 和奈奎斯特频率来保持整体功率。
*如果 [参数:x] 是复数或者如果 [参数:freqrange] 设置为值 "twosided" 或 "居中" 然后 p 它包含一个双面修改的PSD周期图或每个段的功率谱。
*如果在以下位置指定归一化或循环频率的向量 [参数:freq] 然后 p 它将包含一个修改的PSD周期图或每个段的功率谱计算在输入频率。
例子:
频谱图的默认值
Details
生成 表示正弦的总和的信号的样本。 正弦曲线的归一化频率为 rad/倒计时和 rad/倒计时。 具有较高频率的正弦曲线具有 倍的另一正弦波的振幅。
import EngeeDSP.Functions: spectrogram
N = 1024
n = 0:N-1
w0 = 2pi / 5
x = sin.(w0 * n) .+ 10 * sin.(2 * w0 * n)
让我们使用默认函数参数计算窗口化傅立叶变换。 让我们建立一个频谱图。
spectrogram(x,freqloc="yaxis")

复杂信号频谱图
Details
生成 512 具有正弦变化频率组成的频率调制样本。
让我们计算频率调制的中心双向窗口傅立叶变换。 让我们把信号分成几段 32 在重叠的参考点 16 数数。 指定 64 离散傅立叶变换点。 让我们建立一个频谱图。
import EngeeDSP.Functions: spectrogram
N = 512
n = collect(0:N-1)
x = @. exp(im*pi*sin(8*n/N)*32)
spectrogram(x, 32, 16, 64, centered = true, freqloc="yaxis")

让我们将结果显示为数据。
spectrogram(x, 32, 16, 64, centered = true, freqloc="yaxis", out=:data)
(ComplexF64[-0.004799003568266007 - 0.0505661817205643im 0.04928181142575791 - 0.08168061694423136im … 0.06661413792128079 + 0.005582741943515573im 0.06563897996263357 - 0.03809302080510557im; 0.08251130568172917 - 0.009465091175966937im 0.01113491156754788 + 0.0019301579098507408im … -0.0033130937073331257 + 0.04853476281962177im 0.013263617768417113 + 0.025903864451430003im; … ; -0.009649405525420679 - 0.05239849276178002im 0.04401940995315085 - 0.0914065432314291im … 0.06820937107281076 - 6.325260894440854e-5im 0.06223032913485138 - 0.04414639111404428im; 0.08717673328273712 - 0.01888297777102288im 0.0132333274580263 + 0.0005901735083794213im … 0.002529248964486752 + 0.05007735729089752im 0.017119544189724056 + 0.024263377986849743im], [-3.043417883165112, -2.945243112740431, -2.84706834231575, -2.748893571891069, -2.650718801466388, -2.5525440310417067, -2.4543692606170255, -2.356194490192345, -2.2580197197676637, -2.1598449493429825 … 2.2580197197676637, 2.3561944901923453, 2.454369260617026, 2.5525440310417067, 2.6507188014663883, 2.748893571891069, 2.8470683423157497, 2.9452431127404313, 3.043417883165112, 3.1415926535897936], [2.5464790894703255 5.092958178940651 … 76.39437268410977 78.94085177358009], [3.3313443855835635e-5 0.00011750773553006685 … 5.770022477295285e-5 7.436932913915006e-5; 8.906550573571001e-5 1.6490579693362508e-6 … 3.0558345518866313e-5 1.0935898096347522e-5; … ; 3.665443356386854e-5 0.00013290498623780864 … 6.0074958410346855e-5 7.516942675213517e-5; 0.00010273510683279117 2.2657190730313684e-6 … 3.246341980220297e-5 1.1385977847041683e-5])
此外
窗口傅立叶变换(OPF)
Details
窗口化傅立叶变换(OPF)用于分析非稳态信号的频率内容随时间的变化。 OPF的平方的值被称为信号的时频表示的频谱图。
通过滑动分析窗口计算信号的OPF 长度 基于所述信号和所述离散傅立叶变换(dft)的窗口数据的每个段的计算。 窗口在原始信号上滑动,间隔为 计数,这相当于 相邻段之间的重叠计数。 大多数窗口函数在边缘逐渐变细,以避免频谱振铃。 具有窗口的每个段的DFT被添加到包含每个时间点和频率的量值和相位的复数矩阵中。 OPF矩阵具有 列在哪里 -信号长度 ,以及符号 表示向下舍入函数。 矩阵中的行数为 ,DFT点的数量,用于居中和双面变换,以及接近奇数 ,用于实信号的单向变换。
-OPF矩阵的第列 包含以时间为中心的窗口数据DFT :
如果窗口化傅立叶变换中有零,则其转换为分贝导致无法绘制的负无穷大值。 为了避免这种潜在的困难,功能 *频谱图* 增加 每股收益 到窗口傅立叶变换,当你调用它没有输出参数。
|
文学作品
-
Boashash,Boualem,ed。 "时频信号分析处理:综合参考。"第二版。 EURASIP和学术出版社系列的信号和图像处理. 阿姆斯特丹和波士顿:学术出版社,2016。
-
Chassande-Motin,Éric,François Auger和Patrick Flandrin。 "Reassignment。"在时频分析:概念和方法。 由Franz Hlawatsch和François Auger编辑。 伦敦:ISTE/John Wiley and Sons,2008。
-
Fulop,Sean A.和Kelly Fitz。 "Algorithms用于计算时间校正的瞬时频率(重新分配)频谱图,具有应用程序。"美国声学学会杂志。 卷。 119,2006年1月,第360-371页。
-
Oppenheim,Alan V.和Ronald W.Schafer,与John R.Buck。 "Discrete-时间信号处理。"第二版。 Upper Saddle River,NJ:Prentice Hall,1999。
-
Rabiner,Lawrence R.和Ronald W.Schafer。 "语音信号的数字处理。"Englewood Cliffs,NJ:Prentice-Hall,1978。