AnyMath 文档

功率bw

功率带宽。

库::`工程师`

语法

函数调用

* [参数:bw]=powerbw(<参数:x>>) -返回带宽(在半功率电平) [参数:bw]3 输入信号的dB [参数:x]. 该函数计算带宽的水平 3 来自信号的周期图的dB [参数:x].

* [参数:bw]=powerbw([参数:x],[参数:Fs]) -返回带宽的水平 3 dB,以采样率表示 [参数:Fs].

* [参数:bw]=powerbw([参数:pxx],[参数:f]) -返回带宽的水平 3 dB用于功率谱密度(SPM)估计 [参数:pxx]. 频率 [参数:f] 对应于在估计 [参数:pxx].

* [参数:bw]=powerbw([参数:sxx],[参数:f],[参数:rbw]) -计算带宽的水平 3 dB功率谱估计 [参数:sxx]3 分贝。 频率 [参数:f] 对应于在估计 [参数:sxx]. 该功能使用分辨率的带宽 [参数:rbw] 来对每个功率估计值进行积分。

* [参数:bw]=powerbw(___,[参数:freqlims],[参数:r]) -定义计算参考电平的频率范围。 此语法可以包括来自前面选项的输入参数的任何组合,前提是第二个输入参数是 [参数:Fs],或 [参数:f]. 如果第二个输入参数传递为空, *功率* 假定归一化频率。 该函数通过以下方式计算频谱落在参考电平以下的点之间的频率差 [参数:r] dB或到达终点。

* [参数:bw],[参数:flofhi],[参数:power]=powerbw(___) -还返回功率带宽的下限和上限以及这些限值内的功率。

* 功率(___) -在没有输出参数的情况下,在当前图形窗口中绘制SPM或功率谱,并注释带宽。

争论

输入参数

# *x* — 输入信号

+ 向量资料 | 矩阵

Details

指定为矢量或矩阵的输入信号。 如果 x -矢量,它被认为是一个单一的通道。 如果 x -矩阵,然后是函数 *功率* 独立计算每列的功率带宽。 x 它必须是有限值的。

数据类型

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

# *财政司司长* — 抽样调查 费率+ 正实标量

Details

的采样频率,设置为正实标量。 采样率是单位时间内的样本数。 如果时间以秒为单位,则采样频率以赫兹表示。

数据类型

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

# *pxx* — 光谱功率密度

+ 向量资料 | 矩阵

Details

频谱功率密度(SPM)的估计值,定义为矢量或矩阵。 如果 pxx的 -片面评估,那么它必须与实际信号相对应。 如果 pxx的 -矩阵,然后 *功率* 计算每列的带宽 pxx的 无论如何。

功率谱密度应以线性单位表示,而不是以分贝表示。 使用功能 *db2pow* 以将分贝值转换为功率值。

数据类型

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

# *f* — 频率

+ 向量资料

Details

指定为矢量的频率。 如果第一个元素是 f 等于 0 然后 *功率* 假设频谱是真实信号的单向频谱。 换句话说,该函数将零频率仓中的功率值加倍,瞄准点 3 分贝。

数据类型

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

# *sxx* — 功率谱估计

+ 向量资料 | 矩阵

Details

功率谱的估计值,指定为矢量或矩阵。 如果 sxx的 -矩阵,然后 *功率* 计算每列的带宽 sxx的 无论如何。

功率谱应以线性单位表示,而不是以分贝表示。 使用功能 *db2pow* 以将分贝值转换为功率值。

数据类型

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

# *rbw* — 分辨率波段

+ 正标量

Details

的分辨率带,设置为正标量。 分辨率带是两个量的乘积:离散傅立叶变换的频率分辨率和用于计算SPM的窗口的等效噪声带。

数据类型

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

# *freqlims* — 频率限制

+ 二元素向量

Details

频率限制设置为实数值的双元向量。 如果论点是 [医]freqlims 如果设置,则参考电平将是参考频带中的平均功率电平。 如果论点是 [医]freqlims 如果没有指定,参考电平将是频谱中的最大功率电平。 意义 [医]freqlims 必须在目标频段内。

数据类型

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

# *r* — 功率电平下降

+ 10*log10(2) (默认情况下)| 正实标量

Details

功率电平下降,作为正实标量给出,以dB表示。

数据类型

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

名称-值输入参数

# *出* — 输出数据的类型

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

Details

输出数据的类型:

* :数据 -函数返回数据; * :剧情 -函数返回一个图形。

输出参数

# *bw* — 功率带宽

+ 标量,标量 | 向量资料

Details

作为标量或矢量返回的功率带宽。

*如果指定了采样率,则 bw 它的测量单位与 [参数:Fs]. *如果未指定采样频率,则 bw 它具有rad/count的测量单位。

# *flo,fhi* — 频率带宽限制

+ 标量,标量 | 向量资料

Details

作为标量或向量返回的频率带宽边界。

# *电源* — 存储在带宽中的功率

+ 标量,标量 | 向量资料

Details

存储在作为标量或矢量返回的带宽中的功率。

例子:

带宽受限的信号

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]&ast;pi, 3, out=:plot)

powerbw 1

我们将输出带宽,其下限和上限以及带宽功率。 指定采样率 这相当于让它无法识别。

bw, flo, fhi, power = powerbw(d, 2π, [0.2, 0.6] &ast; π)
println([" bw"; "flo"; "fhi"] .&ast; " = " .&ast; string.([bw; flo; fhi] / π) .&ast; "π")
[" bw = 0.20047359178514887π", "flo = 0.24995529776303813π", "fhi = 0.450428889548187π"]
import EngeeDSP.Functions: bandpower

println("power = ", round((power/bandpower(d)&ast;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)

powerbw 2

让我们输出每个通道的带宽水平 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] &ast; " (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))&ast;std(x)。S/(10^(SNR/20));

让我们估计信号带宽在 3 dB并将其标记在频谱图上。

powerbw(x, Fs, out=:plot)

powerbw 3

让我们产生另一个线性调频信号。 设置初始频率 200 kHz,最终频率 300 kHz和是所述第一信号的幅度的两倍的幅度。 加白高斯噪声。

x2 = 2 &ast; chirp(t, 200e3, nSamp/Fs, 300e3)
x2 = x2 .+ randn(size(x2)) &ast; 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);

powerbw 4

将两个通道相加以形成新信号。 让我们估计功率谱并将带宽标记为 3 分贝。

powerbw(x+x2, Fs, out=:plot)

powerbw 5

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&ast;pi&ast;t&ast;100.123e3)
x = x .+ randn(size(x)) &ast; std(x).S / (10^(SNR/20));

使用函数 *[医]扁桃体* 来计算信号功率谱。 让我们估计信号带宽在 3 dB并将其标记在光谱的曲线图上。

p, f, t1 = pspectrum(x, Fs)

powerbw(p, f, out=:plot);

powerbw 6

让我们生成另一个正弦曲线,这次频率为 257.321 kHz和两倍于所述第一正弦波的振幅的振幅。 加白高斯噪声。

x2 = 2 &ast; sin.(2&ast;pi&ast;t&ast;257.321e3)
x2 = x2 .+ randn(size(x2)) &ast; 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);

powerbw 7

将两个通道相加以形成新信号。 让我们估计功率谱并将带宽标记为 3 分贝。

p, f, t = pspectrum(x+x2, Fs)

powerbw(p, f, out=:plot);

powerbw 8

算法

以确定在水平的带宽 3 dB函数 *功率* 使用矩形窗口计算周期图功率谱的估计值,并使用最高估计值作为参考电平。 带宽是频谱至少下降的点之间的频率差 3 dB相对于参考电平。 如果信号在下降到之前到达其端点之一 3 dB,函数 *功率* 使用此端点计算差异。

每级相同的带宽值 3 分贝, bw,可以从信号中获得 [参数:x] 与采样率 [参数:Fs] 在三个方面。

直接从信号

bw=powerbw(x,Fs)

从信号的周期图

P,F=周期图(x,[],长度(x),Fs); bw=powerbw(P,F)

从信号的频谱功率(SPM Welch)的估计

P,F=pwelch(x,rectwin(length(x)),[],length(x),Fs); bw=powerbw(P,F)

因为 *功率* 它使用中间表示将输入信号从时域转换到频域。 返回功率的带宽可能因信号转换方法、DFT点的数量和窗口大小而异。