Engee 文档

n.幽灵,幽灵

信号和频谱图的频谱波峰。

库::`工程师`

语法

函数调用

  • spectralCrest(___,[参数:out]=:情节) -绘制光谱脊。

    • 如果输入信号在时域中,则谱波峰图被绘制为时间的函数。

    • 如果输入信号在频域中,则根据帧号绘制频谱波峰图。

争论

输入参数

# x — 输入信号

+ 列向量 | 矩阵

Details

指定为矢量或矩阵的输入信号。 口译笔译 x 功能取决于形式 [参数:f].

数据类型

漂浮物32, 漂浮64</无翻译>

# f 是 采样频率或频率矢量(Hz)

+ 标量,标量 | 向量资料

Details

以Hz为单位的采样频率或频率矢量,分别指定为标量或矢量。 口译笔译 [参数:x] 功能取决于形式 f:

  • 如果 f -标量, [参数:x] 它被解释为时域中的信号,并且 f -作为采样率。 在这种情况下 [参数:x] 必须是实向量或矩阵。 如果 [参数:x] 设置为矩阵,列被解释为单独的通道。

  • 如果 f -向量, [参数:x] 被解释为频域中的信号,并且 f -以Hz为单位的频率如何对应于字符串 [参数:x]. 在这种情况下 [参数:x] 必须是一个真正的大小数组 ,在哪里 -指定频率下的频谱值数目 f, -个别光谱的数目,以及 -通道数。

  • 行数 [参数:x], ,必须等于元素个数 f.

数据类型

漂浮物32, 漂浮64</无翻译>

名称-值输入参数

将可选参数对指定为 名称,值,在哪里 姓名 -参数的名称,以及 价值 -适当的值。 名称-值参数应该放在其他参数之后,但对的顺序无关紧要。

使用逗号分隔名称和值,以及 姓名 把它放在引号里。

以下名称值参数适用于 [参数:x] -时域中的信号。 如果 [参数:x] -信号在频域中,诸如"名称-值"之类的参数被忽略。

# 窗口 — 时域中使用的窗口

+ rectwin(圆形(f*0.03)) (默认情况下)| 向量资料

Details

时域中使用的窗口,定义为实向量。 矢量元素的数量必须在范围内 [1,尺寸(<参数:x>>,1)]. 矢量元素的数量也必须更大。 [参数:超长].

数据类型

漂浮物32, 漂浮64</无翻译>

# 超长 — 相邻窗口之间重叠的样本数

+ 圆(f*0.02) (默认情况下)| 非负标量

Details

相邻窗口之间重叠的样本数,设置为范围内的整数 [0,大小(<参数:窗口>>,1)).

数据类型

漂浮物32, 漂浮64</无翻译>

# FFTLength — DFT中的元素数

+ numel(窗口) (默认情况下)| 正整数标量

Details

用于计算窗口输入样本的DFT的元素数,设置为正整数标量。 如果没有给出参数, N.长度,长度 默认情况下,它等于 [参数:窗口].

数据类型

漂浮物32, 漂浮64</无翻译>

# 范围 — 频率范围(Hz)

+ [0,f/2] (默认情况下)| 双元素向量是一个字符串

Details

以Hz为单位的频率范围,定义为一个双元向量,是一串范围内不断增加的实数值 [0,[参数:f]/2].

数据类型

漂浮物32, 漂浮64</无翻译>

# 光谱类型 — 频谱类型

+ "权力" (默认情况下)| "幅度"

Details

指定为的频谱类型 "权力""幅度":

  • "权力" -频谱波峰是为单侧功率谱计算的;

  • "幅度" -频谱波峰是为单侧振幅频谱计算的。

数据类型

字符串</无翻译>

# — 输出数据的类型

+ :数据 (默认情况下)| :剧情

Details

输出数据的类型:

  • :数据 -函数返回数据;

  • :剧情 -函数返回一个图形。

输出参数

# 波峰 — 光谱波峰

+ 标量,标量 | 向量资料 | 矩阵

Details

作为标量、矢量或矩阵返回的频谱脊。 每行 波峰 对应于窗口的光谱脊 [参数:x]. 每列 波峰 对应一个独立的信道。

# spectralPeak — 光谱的峰值

+ 标量,标量 | 向量资料 | 矩阵

Details

作为标量、矢量或矩阵返回的频谱峰值。 每行 [医]幽灵,幽灵 对应于窗口的光谱脊 [参数:x]. 每列 [医]幽灵,幽灵 对应于独立信道。

# 幽灵 — 光谱均值

+ 标量,标量 | 向量资料 | 矩阵

Details

作为标量、矢量或矩阵返回的频谱平均值。 每行 [医]幽灵 对应于窗口的光谱脊 [参数:x]. 每列 [医]幽灵 对应一个独立的信道。

例子:

时域中信号的频谱波峰

Details

让我们创建一个带有白高斯噪声的FM信号,并使用默认参数计算波峰。

import EngeeDSP.Functions: chirp, randn, spectralCrest

fs = 1000
t = (0:1/fs:10)
f1 = 300
f2 = 400
x = chirp(t, f1, 10, f2) + randn(length(t), 1)

crest = spectralCrest(x, fs)

让我们绘制光谱脊对时间的依赖性。

spectralCrest(x, fs, out=:plot)

spectralCrest 1

([4.987046327015055, 5.236871947723927, 7.544804457899835, 10.3772996669661, 7.705619466415934, 5.99985432220379, 4.868975479415114, 5.902444766668258, 5.6781203280701815, 6.523480840096338  …  7.803614225515488, 8.289150599849984, 8.382547366360493, 6.028262627692971, 6.683863065009292, 5.194224063455523, 3.7499682104979466, 5.218718311184415, 3.207068721139457, 6.082745967003252], [0.439680011925611, 0.601102975643176, 1.034484757673182, 1.3330997948299792, 0.8496287200130014, 0.4947671774843161, 0.43476209921716236, 0.5070692566692776, 0.6240111902833801, 0.8937070726200211  …  0.962580947281854, 1.2053879463201618, 1.4011032035761652, 0.8161989525511318, 0.716299380591645, 0.37571979028258434, 0.25389759893331165, 0.48721486174074174, 0.31362312100811496, 0.6811440879165471], [0.08816441298005284, 0.11478282868925793, 0.13711220263502233, 0.12846307205270513, 0.11026092369549412, 0.08246319842355515, 0.08929231643396737, 0.08590834420556587, 0.1098974932247451, 0.1369984973554123  …  0.1233506577163312, 0.14541754692476894, 0.16714527724577494, 0.1353953871886124, 0.10716847033290458, 0.072334151490691, 0.06770660034464596, 0.09335910326805238, 0.09779120694884458, 0.11197970318200254], Plot{Plots.PlotlyJSBackend() n=1})

频域中信号的频谱波峰

Details

让我们创建一个带有白高斯噪声的LFM信号,然后使用函数计算频谱图 stft.

import EngeeDSP.Functions: chirp, randn, stft

fs = 1000
t = (0:1/fs:10)'
f1 = 300
f2 = 400
x = chirp(t, f1, 10, f2) + randn(size(t)...)

s, f = stft(x, fs, "FrequencyRange", "onesided")
s = abs.(s).^2

计算频谱图随时间的波峰。

import EngeeDSP.Functions: spectralCrest

crest = spectralCrest(s, f)

让我们绘制频谱脊对帧号的依赖性。

spectralCrest(s, f, out=:plot)

spectralCrest 2

([13.278262719339581, 11.423943909400123, 10.704344652278133, 7.265409265608759, 15.671348771900583, 17.14664360019774, 16.805060471491807, 14.696328543184194, 17.09013028905847, 15.936360071580983  …  16.710312667671143, 16.761812477538534, 12.62023888820894, 10.886155724606253, 13.208164879678929, 15.219986950457587, 11.520098623729307, 16.272350151097733, 18.269299846830197, 16.45774860128549], [1038.875221526367, 1003.8420042054646, 878.9222908403066, 340.3639889446644, 1013.9709212810934, 1511.5917119138305, 1166.5576026614406, 845.4456363019548, 1122.2172446705913, 1132.3238949123497  …  1483.6967321132968, 1213.326351390993, 859.9980861071526, 864.0666804644605, 1179.3520050171578, 766.8614058144813, 652.278982569946, 1323.7297764621535, 1825.3095783670533, 1640.464109040237], [78.23879098379803, 87.87175533831703, 82.10893047555709, 46.847187336823175, 64.70221140755848, 88.15671143339087, 69.41704283899455, 57.52767664506604, 65.66463951354794, 71.05285584828131  …  88.78928609060397, 72.38634563039626, 68.14435873402103, 79.37298549858043, 89.28961863821208, 50.38515527711577, 56.62095472224257, 81.34840783111189, 99.91130441070254, 99.67730998832384], Plot{Plots.PlotlyJSBackend() n=1})

指定标准参数以外的参数

Details

让我们创建一个带有白高斯噪声的FM信号。

import EngeeDSP.Functions: chirp, randn

fs = 1000
t = (0:1/fs:10)
f1 = 300
f2 = 400
x = chirp(t, f1, 10, f2) + randn(length(t), 1)

计算功率谱随时间的峰值。 计算持续时间为 50 有重叠的ms 25 ms.我们使用的范围从 62.5 Hz至 财政司司长/2 来计算峰值。

import EngeeDSP.Functions: spectralCrest, hamming

crest = spectralCrest(x, fs,
                      "Window", hamming(round(Int, 0.05*fs)),
                      "OverlapLength", round(Int, 0.025*fs),
                      "Range", [62.5, fs/2])

让我们绘制山脊对时间的依赖。

spectralCrest(x, fs,
              "Window", hamming(round(Int, 0.05*fs)),
              "OverlapLength", round(Int, 0.025*fs),
              "Range", [62.5, fs/2],
              out=:plot)

spectralCrest 3

([9.538007545680625, 5.730876827698805, 5.032509222116753, 8.153962933846854, 6.409421405881727, 5.675496154818911, 3.936388047909756, 6.4173265830507695, 8.571412474805326, 8.245914575869225  …  9.01887114861341, 6.801343613682713, 4.948170085776451, 4.303209591503631, 6.032361588552264, 5.892015558392096, 4.323588797979937, 4.386216853001777, 5.755291814282484, 8.589943998230682], [1.072192257755449, 0.7611738870970485, 0.6151487100923281, 0.694504549763681, 0.41087548375427874, 0.35978967731876343, 0.38720592502049855, 0.3867047677182591, 0.846628743616088, 0.5501511870614189  …  0.9982941134388452, 0.6086401775262335, 0.16918248208293274, 0.2568272244259427, 0.4861993272274322, 0.563021155034732, 0.48023412546096145, 0.37966201056426135, 0.5141970164720814, 1.0541601271133798], [0.11241260322141401, 0.1328197952917255, 0.12223498913601331, 0.08517386642522173, 0.06410492581705285, 0.06339351970369599, 0.0983657912552872, 0.06025948075318637, 0.09877353891259522, 0.06671803133534474  …  0.11068947510047597, 0.08948822645892963, 0.03419091889530009, 0.0596827133247307, 0.08059850526037807, 0.09555663074120903, 0.11107303397708311, 0.08655796630402203, 0.08934334401533499, 0.12272025607274167], Plot{Plots.PlotlyJSBackend() n=1})

算法

光谱波峰的计算方法见[1]:

哪里

  • -bin中的光谱值 ;

  • -带边界在箱,这是用来计算频谱波峰。

文学作品

  1. Peeters,G."在CUIDADO项目中用于声音描述(相似性和分类)的一大组音频特征。"技术报告;IRCAM:法国巴黎,2004年。