2026a

# fskdemod


频移键控解调

函数库: TyCommunication

# 语法

z = fskdemod(y, M, freq_sep, nsamp)
z = fskdemod(y, M, freq_sep, nsamp, Fs)
z = fskdemod(y, M, freq_sep, nsamp, Fs, symorder)

# 说明

z = fskdemod(y, M, freq_sep, nsamp) 对用频移键控调制的复包络y信号进行非相干解调。


z = fskdemod(y, M, freq_sep, nsamp, Fs) 指定采样频率的单位为 Hz。示例


z = fskdemod(y, M, freq_sep, nsamp, Fs, symorder) 指定了函数如何将二进制赋值给相应的整数。

# 示例

AWGN中FSK信号的调制和解调

通过 AWGN 信道传递一个 FSK 调制信号并估计其产生的误码率(BER)。将估计的误码率(BER)与理论值进行比较。

设置函数参数:

using TyCommunication
using TyMath
rng = MT19937ar(1234)
M = 2         # Modulation order
k = log2(M)   # Bits per symbol
EbNo = 5      # Eb/No (dB)
Fs = 16       # Sample rate (Hz)
nsamp = 8     # Number of samples per symbol
freqsep = 10  # Frequency separation (Hz)

生成随机的符号数据:

data = randi(rng, [0 M - 1], 5000, 1)

频移键控调制:

txsig = fskmod(data,M,freqsep,nsamp,Fs)

通过AWGN信道传递信号:

rxSig = awgn(rng, txsig, EbNo + 10 * log10(k) - 10 * log10(nsamp), "measured")

解调接收的信号:

dataOut = fskdemod(rxSig,M,freqsep,nsamp,Fs)

计算误码率:

num,BER = biterr(data,dataOut)

确定理论误码率,并与估计的误码率进行比较。如果示例使用的是随机数,误码率的值可能会有所不同。

BER_theory, = berawgn(EbNo,"fsk",M,"noncoherent")
(BER, BER_theory)
BER = 0.1096 

BER_theory = 0.10287033054190721

# 输入参数

y - FSK调制输出信号
向量 | 矩阵

FSK调制信号的复基带表示,指定为复数的向量或矩阵。y 的列表示独立的信道。如果 y 是一个多行多列的矩阵,fskdemod 将独立处理这些列。

数据类型:Float64

支持复数:是

M - 调制阶数
2 的整数次幂

调制阶数,指定为 2 的整数次幂。

例如: 2 | 4 | 16

数据类型:Float64

freq_sep - 频率间的期望间隔
正标量

频率间的期望间隔,单位为赫兹(Hz)。

  • 当 M=2 时,利用 z = fskdemod(y,M,freq_sep,nsamp) 时,freq_sep<=1;利用 z = fskdemod(y,M,freq_sep,nsamp,Fs) 时,freq_sep<=Fs。

  • 当 M>2 时,利用 z = fskdemod(y,M,freq_sep,nsamp) 时,freq_sep 必须满足 (M-1)*freq_sep<=1;利用 z = fskdemod(y,M,freq_sep,nsamp,Fs) 时,freq_sep 必须满足 (M-1)*freq_sep<=Fs。

数据类型:Float64

nsamp - 输出符号的样本数
大于 1 的正标量

输出符号的样本数,指定为大于 1 的正标量。

数据类型:Float64

Fs - 采样频率
1Hz(默认) | 正标量

采样频率,指定为正标量。

数据类型:Float64

symorder - 符号顺序
"bin"(默认) | "gray"

符号顺序,指定为"bin"或"gray"。此参数指定函数如何将二进制向量赋值给相应的整数。

  • 如果 symorder 指定为 "bin",则该函数使用自然的二进制编码排序。

  • 如果 symorder 指定为 "gray",则该函数使用格雷编码排序。

数据类型:String

# 输出参数

z - 输出信号
向量 | 矩阵

输出信号,指定为一个正整数向量或矩阵。x 的元素的值必须在 [0,M - 1] 的范围内。

例如:rand(rng, 0:3,100,1)

数据类型:Float64

# 另请参阅

fskmod | pskmod | pskdemod