⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cpfsk.m

📁 这是一个连续相位调制的程序
💻 M
字号:
function [sym_err_rat] = cpfsk(EbN0, m, Ns, frm_num)

% sqwang's source code, used for academic research, not commerce.
% EbN0: bit energy divides noise power spectrum density
% m: Size of modulation alphabet set
% Ns:The number of sample per symbol
% frm_num: the number of frame in the simulation

h = 1/m;              % Modulation index of CPFSK

% Config slot structure(according to rate)
info_sym_num = 47;    % The number of symbol used for transfer traffic data per slot
tail_sym_num = 1;     % The number of tailing-symbol forcing the FSM to 'zero-state'

% SNR adjustment according to correlation between EbN0 and symbol's SNR
% - 10 * log10(Ns) due to sample rate Ns times symbol rate
% 10 * log10(log2(m)) due to log2(m) bits transmited per symbol
SNR = EbN0 - 10 * log10(Ns) + 10 * log10(log2(m));

% Declare varible for SER statistics
err_num_total = 0;

% Generate correlator(matched filter) 
mtchd_fltr = gen_mtchd_fltr(Ns, m, h);

% Generate from-some-state, output(frequency control for cpfsk) & to-some-state matrix.
[state_from_input, state_from, to_state_output, to_state, phase_state] = gen_trlls(m, h);

for i = 1 : frm_num
    % Generate coded modulation tansmitting signal
    [src_data, mod_sig] = gen_cpfsk_sig(info_sym_num, tail_sym_num, h, m, Ns);
    
    % Via gaussian channel
    noisy_sig = awgn(mod_sig, SNR, 0);

    % Correlation
    [corr_metric] = mtchd_fltr_proc(noisy_sig, mtchd_fltr, Ns);
    
    % maximum likelihood sequence detection
    demod_sym = mlsd(corr_metric, h, to_state_output, state_from, state_from_input, phase_state);
    
    [err_num, sym_err_rat] = symerr(demod_sym, src_data, 'column-wise');
    err_num_total = err_num_total + err_num;
end

sym_err_rat = err_num_total/frm_num/info_sym_num;

disp(['Coherent MLSD SER is ', num2str(sym_err_rat)]);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -