2PSK 误码率仿真:代码结构和子程序

本文介绍使用MATLAB进行2PSK误码率仿真的代码结构,将代码分为多个子程序,以便组织和调用。

代码结构

上述代码需要分为以下几个子程序:

  1. main 函数:包含主程序的代码,用于设置参数、调用其他子程序,以及绘制误码率曲线图。

  2. bpskberr 函数:用于计算2PSK误码率的子程序。

  3. fft_func 函数:用于进行快速傅里叶变换的子程序。

  4. ifft_func 函数:用于进行快速逆傅里叶变换的子程序。

  5. bp_f 函数:用于设计带通滤波器的子程序。

  6. lp_f 函数:用于设计低通滤波器的子程序。

  7. sigexpand 函数:用于进行信号扩展的子程序。

代码示例

clear all
close all

% 设置参数

% 调用主程序
main();

% 主程序
function main()
    % 设置参数
    A = 1;    % 载波振幅
    fc = 2;   % 载波频率(Hz)
    SNRindB1 = -5:1:12;     % SNR取值范围
    SNRindB2 = -5:0.2:12;   % SNR取值范围
    N_sample = 100;  % 每个码元的采样点数
    N = 10000;  % 码元数
    Ts = 1;   % 码元宽度
    d = sign(rand(1, N) - 0.5 + eps);  % 产生双极性二进制码元
    df = 0.01;

    simu_err_prb = zeros(1, length(SNRindB1));

    % 理论误码率
    theo_err_prb = zeros(1, length(SNRindB2));
    theo_err_prb1 = zeros(1, length(SNRindB2));
    for i = 1:length(SNRindB2)
        SNR = 10^(SNRindB2(i)/10);
        theo_err_prb(i) = 0.5 * erfc(sqrt(SNR));
        theo_err_prb1(i) = 0.5 * erfc(sqrt(2 * SNR));
    end

    % 普通2PSK接收机实际误码率
    for i = 1:length(SNRindB1)
        [numoferr, panjue, desingal, t] = bpskberr(A, fc, SNRindB1(i), N_sample, N, Ts, d, df);
        simu_err_prb(i) = numoferr;
    end

    % 画误码率曲线图
    semilogy(SNRindB2, theo_err_prb, SNRindB1, simu_err_prb, 'o', SNRindB2, theo_err_prb1, '*');
    axis([-5 12 0.00000001 1]);
    xlabel('SNR in dB');
    ylabel('Prb of Err');
    legend('蒙特卡洛仿真误码率', '2psk接收机实际误码率', '最佳接收机理论误码率');
end

% 2psk误码率计算子程序
function [numoferr, panjue, desingal, t] = bpskberr(A, fc, snr, N_sample, N, Ts, d, df)
    % ... 你的代码
end

% 快速傅里叶变换
function [output, f] = fft_func(signal, ts, fs)
    % ... 你的代码
end

% 快速逆傅里叶变换
function [output] = ifft_func(signal, fs)
    % ... 你的代码
end

% 带通滤波器函数
function [output, f] = bp_f(N, f_start, f_cutoff, fs, delay)
    % ... 你的代码
end

% 低通滤波器函数
function [output, f] = lp_f(N, B, fs, delay)
    % ... 你的代码
end

% 信号扩展函数
function [output] = sigexpand(signal, factor)
    % ... 你的代码
end

总结

此次修改将代码分为多个子程序,以便组织和调用。请根据您的需求和实际代码结构进行适当调整。

希望这可以帮助您解决问题。如果您还有其他问题,请随时提问。


原文地址: https://www.cveoy.top/t/topic/qYC 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录