MIMO第二周作业

MATLAB/Python 作业

  1. 重复单输入单输出(SISO)情况(发射机、信道、加性噪声、接收机),并生成前一张幻灯片中的符号错误率(SER)曲线图(瑞利信道和加性高斯白噪声信道)

  2. 考虑一个形如以下的信道: \[ h(\tau)=\sum_{i=1}^{10}\delta(\tau-\tau_1) \] 其中 \(\tau_i\)\([50m,100m]\cdot\dfrac 1c\) 范围内均匀分布。请展示在频率 \(f=2.5GHz\) 时,信道频率响应 \(H(f)\) 的实部和虚部的分布情况。

SISO瑞利信道和加性高斯白噪声信道仿真

高斯信道是一种理想化的信道模型,它假设信号在传输过程中受到加性高斯白噪声的影响。高斯白噪声是一种具有平均功率为零的随机信号,它在所有频率上具有相等的功率密度。在高斯信道中,接收端的信号可以表示为发送端信号加上噪声。

瑞利信道是一种常见的无线信道模型,它模拟了多径传播和衰落效应。在瑞利信道中,信号到达接收端的路径不止一条,并且这些路径的相位和振幅可能会发生变化。这种多路径传播导致接收信号的幅度和相位随时间变化,称为瑞利衰落。

对于QPSK信道经过高斯信道和瑞利信道的误码率仿真,我们可以先生成一组随机的比特流作为发送信号。然后,对于每个比特流,将其映射为QPSK信号,并添加高斯白噪声或模拟瑞利衰落。接收端接收到信号后,可以通过比较接收信号与发送信号之间的相位或幅度来判断是否发生了错误。通过重复这个过程,并计算错误比特数与总比特数的比值,我们可以得到误码率的估计值。

代码实现如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
clc;
close all;
clear all;

%定义基本变量
snr_dB = 0:1:40;
snr_linear = 0.5 * (10.^(snr_dB / 10));
num_bits = 1000000; %传输的信号长度
mod_order = 4; %QPSK

%产生比特序列
original_bits = randi([0, 1], 1, num_bits);
rayleigh_fading = raylrnd(0.5, 1, num_bits);% 产生瑞利分布的幅度衰减
modulated_signal = pskmod(original_bits, mod_order);% QPSK调制
rayleigh_channel_signal = modulated_signal .* rayleigh_fading;

awgn_ber_simulation = zeros(size(snr_dB));
rayleigh_ber_simulation = zeros(size(snr_dB));

for i = 1:length(snr_dB)
awgn_received_signal = awgn(modulated_signal, snr_dB(i), 'measured'); % 通过高斯信道
awgn_demodulated_bits = pskdemod(awgn_received_signal, mod_order); % QPSK解调
[bit_errors_awgn, ~] = biterr(original_bits, awgn_demodulated_bits); % 计算误码率
awgn_ber_simulation(i) = bit_errors_awgn / num_bits;

rayleigh_received_signal = awgn(rayleigh_channel_signal, snr_dB(i), 'measured');
rayleigh_demodulated_bits = pskdemod(rayleigh_received_signal, mod_order);
[bit_errors_rayleigh, ~] = biterr(original_bits, rayleigh_demodulated_bits);
rayleigh_ber_simulation(i) = bit_errors_rayleigh / num_bits;
end

% 绘制仿真结果
figure
semilogy(snr_dB, awgn_ber_simulation, 'b-', 'LineWidth', 1.5);
hold on;
semilogy(snr_dB, rayleigh_ber_simulation, 'r-', 'LineWidth', 1.5);
legend('AWGN', 'Rayleigh');
title('QPSK误码性能分析');
xlabel('信噪比(dB)');
ylabel('比特错误率(BER)');
grid on;

运行结果如下:

QPSK误码率仿真

信道频率响应 \(H(f)\) 的实部和虚部的分布

  • 使用rand函数生成均匀分布的随机距离tau_i,并将其转换为时间延迟。
  • 对于每个信道实例,计算频率响应H(f),即对所有路径的复指数项求和。

代码实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
clc;
close all;
clear all;

% 参数设置
num_paths = 10; % 信道路径数
distance_range = [50, 100];
c = 3e8;
f = 2.5e9;
num_samples = 1000;

real_part = zeros(num_samples, 1);
imag_part = zeros(num_samples, 1);

for i = 1:num_samples
% 生成均匀分布的tau_i(距离转换为时间延迟)
tau_i = distance_range(1) + (distance_range(2) - distance_range(1)) * rand(num_paths, 1);
tau_i = tau_i / c;

H_f = sum(exp(-1i * 2 * pi * f * tau_i));

real_part(i) = real(H_f);
imag_part(i) = imag(H_f);
end

% 绘制实部和虚部的分布直方图
figure;
subplot(1, 2, 1);
histogram(real_part, 30);
title('H(f) 实部分布');
xlabel('实部');
ylabel('频数');

subplot(1, 2, 2);
histogram(imag_part, 30);
title('H(f) 虚部分布');
xlabel('虚部');
ylabel('频数');

运行结果:

实部虚部分布

本站的运行成本约为每个月5元人民币,如果您觉得本站有用,欢迎打赏:


MIMO第二周作业
https://suzumiyaakizuki.github.io/2025/03/10/MIMO第二周作业/
作者
SuzumiyaAkizuki
发布于
2025年3月10日
许可协议