基于 MATLAB 的 QPSK 调制、解调、通过高斯信道的误码率计算,并绘制误码率图和眼图、星座图

基于 MATLAB 的 QPSK 调制、解调、通过高斯信道的误码率计算,并绘制误码率图和眼图、星座图。

 

1. QPSK 调制

function modulated_signal = qpsk_modulation(data)
    % 将二进制数据转换为 QPSK 调制信号
    data = reshape(data, 2, []);
    modulated_signal = (2*data(1,:) - 1) + 1j*(2*data(2,:) - 1);
end

2. QPSK 解调

function demodulated_data = qpsk_demodulation(modulated_signal)
    % 将 QPSK 调制信号解调为二进制数据
    real_part = real(modulated_signal) > 0;
    imag_part = imag(modulated_signal) > 0;
    demodulated_data = [real_part; imag_part];
end

3. 通过高斯信道

function received_signal = gaussian_channel(modulated_signal, SNR)
    % 添加高斯噪声
    noise = (randn(size(modulated_signal)) + 1j*randn(size(modulated_signal))) / sqrt(2);
    received_signal = modulated_signal + noise / sqrt(10^(SNR/10));
end

4. 误码率计算

function BER = calculate_BER(data, demodulated_data)
    % 计算误码率
    errors = sum(data ~= demodulated_data);
    BER = errors / length(data);
end

5. 误码率图和眼图、星座图绘制

function qpsk_simulation()
    % 参数设置
    data_length = 10000;
    SNR_range = 0:2:10;
    BER = zeros(length(SNR_range), 1);

    % 生成随机二进制数据
    data = randi([0, 1], data_length, 1);

    % 调制
    modulated_signal = qpsk_modulation(data);

    % 通过高斯信道并解调
    for i = 1:length(SNR_range)
        received_signal = gaussian_channel(modulated_signal, SNR_range(i));
        demodulated_data = qpsk_demodulation(received_signal);
        BER(i) = calculate_BER(data, demodulated_data);
    end

    % 绘制误码率图
    figure;
    semilogy(SNR_range, BER, 'b-o');
    xlabel('SNR (dB)');
    ylabel('BER');
    title('QPSK BER vs SNR');

    % 绘制眼图
    figure;
    eyediagram(received_signal, 2);

    % 绘制星座图
    figure;
    scatterplot(received_signal);
end

使用方法

  1. 将上述代码保存为一个 .m 文件,例如 qpsk_simulation.m

  2. 在 MATLAB 中运行该脚本:

    qpsk_simulation();
    

代码仿真 qpsk调制,解调,通过高斯信道误码率计算,并画误码率图和眼图,星座图 youwenfan.com/contentcsb/99373.html

总结

可以实现 QPSK 调制、解调、通过高斯信道的误码率计算,并绘制误码率图和眼图、星座图。这些工具对于分析和优化 QPSK 通信系统具有重要意义。

专注于matlab/simulink,电子电路,编程