主要内容

fskdemod

频移键控解调

说明

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) 指定函数如何将二进制字分配给对应的整数。

示例

全部折叠

使 FSK 信号通过 AWGN 信道,并估计所得的误码率 (BER)。将估计的 BER 与理论值进行比较。

设置仿真参数。

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([0 M-1],5000,1);

应用 FSK 调制。

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

使信号通过 AWGN 信道。

rxSig  = awgn(txsig,EbNo+10*log10(k)-10*log10(nsamp),...
    'measured',[],'dB');

解调接收到的信号。

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

计算误码率。

[num,BER] = biterr(data,dataOut);

确定理论 BER 并将其与估计 BER 进行比较。您的 BER 值可能有所不同,因为示例使用随机数。

BER_theory = berawgn(EbNo,'fsk',M,'noncoherent');
[BER BER_theory]
ans = 1×2

    0.1000    0.1029

输入参数

全部折叠

FSK 调制信号的复基带表示,指定为复数值的向量或矩阵。如果 y 是具有多行多列的矩阵,fskdemod 独立处理各列。

数据类型: double | single
复数支持:

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

示例: 2 | 4 | 16

数据类型: double

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

  • 如果 symorder'bin',函数使用二进制编码排序。

  • 如果 symorder'gray',函数使用格雷编码排序。

数据类型: char

频率间的期望间隔,以 Hz 为单位指定。根据奈奎斯特采样定理,freq_sepM 必须满足 (M-1)*freq_sep <= Fs

数据类型: double

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

数据类型: double

采样率,指定为正标量。

数据类型: double

输出参量

全部折叠

输出信号,以由正整数组成的向量或矩阵形式返回。z 的元素取值范围为 [0, M – 1]。

示例: randi([0 3],100,1)

数据类型: double

参考

[1] Sklar, Bernard. Digital Communications: Fundamentals and Applications. 2nd ed. Upper Saddle River, NJ: Prentice-Hall PTR, 2001.

扩展功能

全部展开

C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

版本历史记录

在 R2006a 之前推出

全部展开