功率bw
功率带宽。
库::`工程师`
语法
函数调用
* [参数:bw],[参数:flofhi],[参数:power]=powerbw(___) -还返回功率带宽的下限和上限以及这些限值内的功率。
* 功率(___) -在没有输出参数的情况下,在当前图形窗口中绘制SPM或功率谱,并注释带宽。
争论
输入参数
# *x* — 输入信号
+
向量资料 | 矩阵
Details
指定为矢量或矩阵的输入信号。 如果 x -矢量,它被认为是一个单一的通道。 如果 x -矩阵,然后是函数 *功率* 独立计算每列的功率带宽。 x 它必须是有限值的。
| 数据类型 |
|
#
*财政司司长* —
抽样调查
费率+
正实标量
Details
的采样频率,设置为正实标量。 采样率是单位时间内的样本数。 如果时间以秒为单位,则采样频率以赫兹表示。
| 数据类型 |
|
# *pxx* — 光谱功率密度
+
向量资料 | 矩阵
Details
频谱功率密度(SPM)的估计值,定义为矢量或矩阵。 如果 pxx的 -片面评估,那么它必须与实际信号相对应。 如果 pxx的 -矩阵,然后 *功率* 计算每列的带宽 pxx的 无论如何。
功率谱密度应以线性单位表示,而不是以分贝表示。 使用功能 *db2pow* 以将分贝值转换为功率值。
| 数据类型 |
|
# *f* — 频率
+
向量资料
Details
指定为矢量的频率。 如果第一个元素是 f 等于 0 然后 *功率* 假设频谱是真实信号的单向频谱。 换句话说,该函数将零频率仓中的功率值加倍,瞄准点 3 分贝。
| 数据类型 |
|
# *sxx* — 功率谱估计
+
向量资料 | 矩阵
Details
功率谱的估计值,指定为矢量或矩阵。 如果 sxx的 -矩阵,然后 *功率* 计算每列的带宽 sxx的 无论如何。
功率谱应以线性单位表示,而不是以分贝表示。 使用功能 *db2pow* 以将分贝值转换为功率值。
| 数据类型 |
|
# *rbw* — 分辨率波段
+
正标量
Details
的分辨率带,设置为正标量。 分辨率带是两个量的乘积:离散傅立叶变换的频率分辨率和用于计算SPM的窗口的等效噪声带。
| 数据类型 |
|
# *freqlims* — 频率限制
+
二元素向量
Details
频率限制设置为实数值的双元向量。 如果论点是 [医]freqlims 如果设置,则参考电平将是参考频带中的平均功率电平。 如果论点是 [医]freqlims 如果没有指定,参考电平将是频谱中的最大功率电平。 意义 [医]freqlims 必须在目标频段内。
| 数据类型 |
|
例子:
带宽受限的信号
Details
我们将生成一个信号,其SPM类似于带通FIR滤波器的频率响应。 88-具有归一化截止频率的th阶 rad/倒计时和 rad/倒计时。
import EngeeDSP.Functions: fir1
d = fir1(88, [0.25 0.45])
的电平计算占用的信号频带 3 分贝。 我们将指定为参考水平的平均功率范围从 rad/倒数至 rad/倒计时。 让我们为SPM建立一个时间表.
import EngeeDSP.Functions: powerbw
powerbw(d, [], [0.2 0.6]*pi, 3, out=:plot)

我们将输出带宽,其下限和上限以及带宽功率。 指定采样率 这相当于让它无法识别。
bw, flo, fhi, power = powerbw(d, 2π, [0.2, 0.6] * π)
println([" bw"; "flo"; "fhi"] .* " = " .* string.([bw; flo; fhi] / π) .* "π")
[" bw = 0.20047359178514887π", "flo = 0.24995529776303813π", "fhi = 0.450428889548187π"]
import EngeeDSP.Functions: bandpower
println("power = ", round((power/bandpower(d)*100)[1], digits=1), "% of total")
power = 96.9% of total
添加具有归一化截止频率的第二通道 rad/倒计时和 rad/count和第一通道振幅的十分之一的振幅。
d = [d fir1(88, [0.5 0.8])/10]
让我们计算一个双通道信号的带宽的水平 6 分贝。 我们将指定频谱的最大功率电平作为参考电平。
powerbw(d, [], [], 6, out=:plot)

让我们输出每个通道的带宽水平 6 dB,以及下限和上限。
bw, flo, fhi = powerbw(d, [], [], 6)
bds = [bw[1] bw[2]; flo[1] flo[2]; fhi[1] fhi[2]]
labels = [" bw", "flo", "fhi"]
for channel in 1:2
for i in 1:3
println(labels[i] * " (ch_$channel) = $(round(bds[i, channel] / π, digits=5))π")
end
end
bw (ch_1) = 0.19794π
flo (ch_1) = 0.25176π
fhi (ch_1) = 0.44971π
bw (ch_2) = 0.29418π
flo (ch_2) = 0.50271π
fhi (ch_2) = 0.79689π
3dB电平的线性调频信号的带宽
Details
生成 1024 频率的线性调频信号的采样 1024 千赫。 线性调频信号的初始频率为 50 kHz,并且在样品的末端它到达 100 千赫。 加白高斯噪声,使信噪比为 40 分贝。
import EngeeDSP.Functions: chirp, std, powerbw
nSamp=1024
Fs=1024e3
信噪比=40
t=(0:nSamp-1)'/Fs
x=线性调频(t,50e3,nSamp/Fs,100e3)
x=x.+randn(size(x))*std(x)。S/(10^(SNR/20));
让我们估计信号带宽在 3 dB并将其标记在频谱图上。
powerbw(x, Fs, out=:plot)

让我们产生另一个线性调频信号。 设置初始频率 200 kHz,最终频率 300 kHz和是所述第一信号的幅度的两倍的幅度。 加白高斯噪声。
x2 = 2 * chirp(t, 200e3, nSamp/Fs, 300e3)
x2 = x2 .+ randn(size(x2)) * std(x2).S / (10^(SNR/20));
让我们结合线性调频信号得到一个双通道信号。 让我们估计每个通道的带宽在 3 分贝。
y = powerbw([x; x2]', Fs)
([44397.27005796786, 92225.32672086824], [52812.86939829475, 203906.69033994916], [97210.13945626261, 296132.0170608174], [0.4626064585350288, 1.8949783295500369])
注意两个通道的带宽在 3 谱图上的dB。
powerbw([x; x2]', Fs, out=:plot);

将两个通道相加以形成新信号。 让我们估计功率谱并将带宽标记为 3 分贝。
powerbw(x+x2, Fs, out=:plot)

3dB电平的正弦信号的带宽
Details
生成 1024 正弦频率参考 100.123 kHz,以频率采样 1024 千赫。 加白高斯噪声,使信噪比为 40 分贝。 要获得可重复的结果,请重新启动随机数生成器。
import EngeeDSP.Functions: pspectrum
using Random
nSamp = 1024
Fs = 1024e3
SNR = 40
Random.seed!("default")
t = (0:nSamp-1)'/Fs
x = sin.(2*pi*t*100.123e3)
x = x .+ randn(size(x)) * std(x).S / (10^(SNR/20));
使用函数 *[医]扁桃体* 来计算信号功率谱。 让我们估计信号带宽在 3 dB并将其标记在光谱的曲线图上。
p, f, t1 = pspectrum(x, Fs)
powerbw(p, f, out=:plot);

让我们生成另一个正弦曲线,这次频率为 257.321 kHz和两倍于所述第一正弦波的振幅的振幅。 加白高斯噪声。
x2 = 2 * sin.(2*pi*t*257.321e3)
x2 = x2 .+ randn(size(x2)) * std(x2).S / (10^(SNR/20));
结合正弦得到双通道信号。 让我们估计每个信道的功率谱,并使用结果来确定带宽的水平 3 分贝。
p, f, t = pspectrum([x; x2]', Fs)
y = powerbw(p, f)
([2422.1946183990804, 2421.005680883798], [98912.42452799428, 256110.8536321677], [101334.61914639336, 258531.8593130515], [981.6720278356812, 3921.693919771026])
注意两个通道的带宽在 3 谱图上的dB。
powerbw(p, f, out=:plot);

将两个通道相加以形成新信号。 让我们估计功率谱并将带宽标记为 3 分贝。
p, f, t = pspectrum(x+x2, Fs)
powerbw(p, f, out=:plot);

算法
以确定在水平的带宽 3 dB函数 *功率* 使用矩形窗口计算周期图功率谱的估计值,并使用最高估计值作为参考电平。 带宽是频谱至少下降的点之间的频率差 3 dB相对于参考电平。 如果信号在下降到之前到达其端点之一 3 dB,函数 *功率* 使用此端点计算差异。
直接从信号 |
|
从信号的周期图 |
|
从信号的频谱功率(SPM Welch)的估计 |
|
因为 *功率* 它使用中间表示将输入信号从时域转换到频域。 返回功率的带宽可能因信号转换方法、DFT点的数量和窗口大小而异。
|