%% AWGN信道 Eb = Energy_txsig/(Nused*log2(M)*Nofdm); SNR = 10.^(SNRdB(ii)/10); %%信噪比换算 sigma = sqrt(Eb/2/SNR); noise_var = Eb/SNR; %噪声方差(功率) noise = randn(Ns*Nofdm,1)+1i*randn(Ns*Nofdm,1); rsig_cp = Y_mul + 1*sigma*noise; 是什么意思
时间: 2023-12-16 09:06:47 浏览: 48
这段代码实现了一个加性高斯白噪声(AWGN)信道,其中Eb表示每个比特的能量,SNRdB表示信噪比(以分贝为单位)。程序中将SNRdB转化为线性域的信噪比SNR,然后根据式子sigma = sqrt(Eb/2/SNR)计算出噪声的标准差sigma。程序中的noise_var表示噪声的方差,即噪声的功率。接下来,程序中生成了一个大小为Ns*Nofdm的复数高斯白噪声信号noise,并将其加到接收信号Y_mul上,得到含有噪声的接收信号rsig_cp。其中,sigma*noise表示将标准差为sigma的高斯白噪声加到接收信号上。最后,程序中的1*sigma*noise表示将接收信号的能量放大1倍,以便在接收端进行信号解调时能够还原原始信号。
相关问题
clc; clear; close all; tic; N=128; M=[4 16 32 64]; D=5; c=0.15; nt=0.1289; nr=0.9500; N_ofdm=1000; snr_dB=1:18; SNR=10.^(snr_dB./10); for kk=1:length(snr_dB) N_fft=N*2+2; for jj=1:length(M) base_data=randi([0 1],1,N*N_ofdm*log2(M(jj))); data_temp1= reshape(base_data,log2(M(jj)),[])'; data_temp2= bi2de(data_temp1); mod_data = qammod(data_temp2,M(jj)); data=reshape(mod_data,N,[])'; H_data=zeros(N_ofdm,N_fft); H_data(:,2:N_fft/2)= data; H_data(:,N_fft/2+2:N_fft)= conj(fliplr(data)); ifft_data=ifft(H_data,[],2); ifft_data=ifft_data+0.02*ones(size(ifft_data)); Noise=awgn(ifft_data,SNR(kk),'measured')-ifft_data; Rx_data=ifft_data*nt*nr*exp(-c*D)+Noise; Rx_data=Rx_data/(nt*nr*exp(-c*D)) fft_data=fft(Rx_data,[],2); Rx_psk_data=fft_data(:,2:N_fft/2); demodulation_data = qamdemod(Rx_psk_data',M(jj)); demodulation_data= reshape(demodulation_data,[],1); temp1=de2bi(demodulation_data); err(kk,jj)=sum(sum((temp1~=data_temp1))); end BER(kk,:)=err(kk,:)./(N*N_ofdm*log2(M(jj))); end figure(); for a=1:length(M) semilogy(snr_dB,BER(:,a),'*-','LineWidth',1.5);hold on; end代码翻译
clc; clear; close all; tic; % 清空变量和图形窗口,记录程序开始时间
N=128; % 子载波数
M=[4 16 32 64]; % 调制阶数
D=5; % 距离
c=0.15; % 衰落系数
nt=0.1289; % 发射天线数
nr=0.9500; % 接收天线数
N_ofdm=1000; % OFDM符号数
snr_dB=1:18; % 信噪比范围(单位:dB)
SNR=10.^(snr_dB./10); % 信噪比(单位:线性)
for kk=1:length(snr_dB) % 循环信噪比
N_fft=N*2+2; % FFT点数
for jj=1:length(M) % 循环调制阶数
base_data=randi([0 1],1,N*N_ofdm*log2(M(jj))); % 生成随机二进制数据
data_temp1= reshape(base_data,log2(M(jj)),[])'; % 二进制数据转换成M进制数据
data_temp2= bi2de(data_temp1); % 将M进制数据转换为十进制数据
mod_data = qammod(data_temp2,M(jj)); % QAM调制
data=reshape(mod_data,N,[])'; % 按子载波进行分组
H_data=zeros(N_ofdm,N_fft); % 初始化频域数据
H_data(:,2:N_fft/2)= data; % 将调制后的数据存放在频域数据中
H_data(:,N_fft/2+2:N_fft)= conj(fliplr(data)); % 利用对称性将数据存放在频域数据中
ifft_data=ifft(H_data,[],2); % IFFT变换
ifft_data=ifft_data+0.02*ones(size(ifft_data)); % 加上直流偏置
Noise=awgn(ifft_data,SNR(kk),'measured')-ifft_data; % 加入高斯白噪声
Rx_data=ifft_data*nt*nr*exp(-c*D)+Noise; % 接收信号经过信道影响和加性高斯白噪声干扰,得到接收信号
Rx_data=Rx_data/(nt*nr*exp(-c*D)); % 接收信号归一化
fft_data=fft(Rx_data,[],2); % FFT变换
Rx_psk_data=fft_data(:,2:N_fft/2); % 从频域数据中提取QAM调制后的数据
demodulation_data = qamdemod(Rx_psk_data',M(jj)); % QAM解调
demodulation_data= reshape(demodulation_data,[],1); % 将解调后的十进制数据转换为一维向量
temp1=de2bi(demodulation_data); % 将十进制数据转换为二进制数据
err(kk,jj)=sum(sum((temp1~=data_temp1))); % 统计误码数
end
BER(kk,:)=err(kk,:)./(N*N_ofdm*log2(M(jj))); % 计算误码率
end
figure(); % 新建图形窗口
for a=1:length(M) % 循环调制阶数
semilogy(snr_dB,BER(:,a),'*-','LineWidth',1.5);hold on; % 绘制误码率曲线
end
% 设置参数 N = 100; % 仿真次数 Eb = 1; % 符号能量 SNR_db = [0:2:20]; % 信噪比范围 SNR = 10.^(SNR_db/10); % 信噪比 % 初始化计数器 BER_sim_bpsk = zeros(size(SNR)); BER_sim_qpsk = zeros(size(SNR)); % 循环信噪比范围 for i=1:length(SNR) % 计数器清零 BER_cnt_bpsk = 0; BER_cnt_qpsk = 0; % 循环仿真次数 for j=1:N % 生成随机数据 data = randi([0,1],1,1000); % BPSK调制 modulated_data_bpsk = pskmod(data, 2); % QPSK调制 modulated_data_qpsk = pskmod(data, 4); % 中继节点转发BPSK信号 relayed_data_bpsk = modulated_data_bpsk; % 中继节点转发QPSK信号 relayed_data_qpsk = modulated_data_qpsk; % 接收端接收信号(BPSK) received_data_bpsk = awgn(relayed_data_bpsk*sqrt(SNR(i)), 0); decoded_data_bpsk = pskdemod(received_data_bpsk, 2); % 接收端接收信号(QPSK) received_data_qpsk = awgn(relayed_data_qpsk*sqrt(SNR(i)), 0); decoded_data_qpsk = pskdemod(received_data_qpsk, 4); % 统计误码率(BPSK) BER_cnt_bpsk = BER_cnt_bpsk + sum(xor(data,decoded_data_bpsk))/length(data); % 统计误码率(QPSK) BER_cnt_qpsk = BER_cnt_qpsk + sum(xor(data,decoded_data_qpsk))/length(data); end % 计算平均误码率 BER_sim_bpsk(i) = BER_cnt_bpsk / N; BER_sim_qpsk(i) = BER_cnt_qpsk / N; end % 绘制误码率-信噪比曲线(BPSK) semilogy(SNR_db,BER_sim_bpsk,'-o'); xlabel('信噪比(dB)'); ylabel('误码率'); title('中继协作通信网络BPSK误码率性能分析');分析代码和结果
这段代码是一个中继协作通信网络的BPSK和QPSK误码率性能分析程序,主要分析了不同信噪比下的误码率情况。程序中设置了仿真次数、符号能量和信噪比范围等参数,然后通过循环信噪比范围和仿真次数,生成随机数据,对BPSK和QPSK信号进行调制和解调,然后通过AWGN信道传输,并统计误码率。最后,通过绘制误码率-信噪比曲线,分析中继协作通信网络BPSK误码率性能。
结果显示,在低信噪比下,BPSK的误码率比QPSK低,但是在高信噪比下,QPSK的误码率明显比BPSK低。这是因为在低信噪比下,BPSK的调制方式更简单,更容易被接收端正确解调,而在高信噪比下,QPSK的调制方式更有效,可以更好地利用信道带宽资源,从而降低误码率。
总之,这段代码可以帮助我们分析不同信噪比下的中继协作通信网络性能,为我们设计更好的通信系统提供参考。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)