matlab二进制数字基带传输系统仿真的代码
时间: 2023-08-06 14:02:53 浏览: 159
matlab-数字图像的无线传输matlab仿真,可以选择BPSK,QPSK,QAM,以一个图片为输入源进行接收matlab仿真
以下是一个简单的基带传输系统仿真Matlab代码示例:
```matlab
clear all;
close all;
% 信源和信道参数
Fs = 100; % 采样率
fc = 10; % 信道频率
T = 1/Fs; % 采样间隔
t = [0:T:1-T]; % 时间向量
N = length(t); % 采样点数
% 生成矩形脉冲信号
data = randi([0 1], 1, N); % 生成随机比特序列
pulse = ones(1, Fs); % 矩形脉冲
x = upsample(data, Fs); % 采样率提高
h = conv(pulse, x); % 生成基带信号 h(t)
h = h(1:N); % 等效于取 h(t) 的采样值
% 添加高斯白噪声
EbNo = 10; % 信噪比
SNR = EbNo + 10*log10(Fs); % 信噪比转换为信道信噪比
noise = randn(1, N)/sqrt(2*10^(SNR/10)); % 高斯白噪声
y = h + noise; % 加噪声得到接收信号 y(t)
% 信号解调
r = y .* cos(2*pi*fc*t); % 混频
lpf = fir1(100, fc/Fs); % 低通滤波器
z = filter(lpf, 1, r); % 低通滤波
z = z(101:N); % 去掉滤波器的延迟
% 比特误码率 BER 计算
data_est = z > 0.5; % 判决
num_err = sum(xor(data, data_est)); % 统计比特错误数
BER = num_err/N; % 比特误码率
% 画出信号波形和频谱
figure(1)
subplot(2,1,1)
plot(t, h, 'r', t, y, 'b')
xlabel('Time (s)')
ylabel('Amplitude')
legend('Transmitted Signal', 'Received Signal')
title(['Eb/No = ', num2str(EbNo), ' dB'])
subplot(2,1,2)
freq = [-Fs/2:Fs/N:Fs/2-Fs/N];
Y = fftshift(fft(y));
H = fftshift(fft(h));
plot(freq, abs(H), 'r', freq, abs(Y), 'b')
xlabel('Frequency (Hz)')
ylabel('Magnitude')
legend('Transmitted Signal Spectrum', 'Received Signal Spectrum')
title(['BER = ', num2str(BER)])
```
这个示例代码生成随机比特序列并使用矩形脉冲生成基带信号。然后添加高斯白噪声,并通过混频、低通滤波和判决解调接收信号。最后,计算比特误码率(BER)并画出信号波形和频谱。请注意,这只是一个简单的示例,实际的基带传输系统的实现可能更加复杂。
阅读全文