matlab二进制数字基带传输系统仿真实践——通信原理篇——信噪比与误码率的计算

这里先明确几个点:

S:信号平均功率        N:噪声平均功率        Eb:每bit的信号能量           N0:噪声功率谱密度           Es:符号信号的能量      Rb:传信率,即每秒传输的bit数目     W(B):带宽        Ts(Tb):采样点的时间间隔          k:每个符号包含的bit数目

其中Es=Eb*k,Rb=k/Ts    故Es/N0=0.5*(S/R)*(W/Ts),S/N=(Eb/N0)*(Eb/N0)。
      对于基带双极性信道,由于B=1/2Ts,因此(Eb*k)/N0=(S/N)*(W/Ts),即S/N=2*(Es/N0)。

     2.Eb/N0:比特信噪比

        Es/N0:符号信噪比,Es/N0=log2(M)*Eb/N0。

     3.  通信原理书上的误码率的公式为:Pe=1/2*[1-erf(A/(√2*σn))]=1/2*erfc(A/(√2*σn))。

  在这里由

以下是一个简单的基带传输系统仿真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)并画出信号波形频谱。请注意,这只是一个简单的示例,实际的基带传输系统的实现可能更加复杂。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值