%------------------论文曲线——有改进---------------------
clear all;
tic
%-----------------仿真参数----------------------------
fs_filter=2048;%滤波器的采样率
N=2048;%子载波个数
Ns=40;%symbol个数
dsource_buf=zeros(1,2048*Ns-6);
dsource=zeros(1,2048*Ns-6);
N_frame=2;%仿真次数
SNR=0:1:10;
BER=zeros(1,length(SNR));
out_interleaving=zeros(1,163840);
out_interleaving1=zeros(2,81920);
data=zeros(2048,40);
d_source=zeros(2048,80);
%---------------产生训练序列-------------------------
pilot=zeros(2048,3);
for m=1:512
pilot(4*m-3,:)=[0,1,0];
pilot(4*m-2,:)=[0,1,0];
pilot(4*m-1,:)=[0,-1,0];
pilot(4*m,:)=[0,-1,0];
end
%-------------- 多径衰落信道:IEEE802.22-----------------------------------
SampR = 1/9.14; % 信号速率 9.14M
h = zeros(1,round(14/SampR)+1); % 信道冲激响应初始化
h(1) = 10^((-6)/10);
h(round(3/SampR)+1) = 1; % 信道长度:6 chips
h(round(5/SampR)+1) = 10^((-7.0)/10);
h(round(7/SampR)+1) = 10^((-22.0)/10);
h(round(10/SampR)+1) = 10^((-16.0)/10);
h(round(14/SampR)+1) = 10^((-20.0)/10);
%----------------------------------------------------------------------
H=fft(h,N);
for isnr=1:length(SNR)
count=0;
for n_frame=1:N_frame
%------------------产生数据符号-----------------------------
dsource_buf=randn(1,N*Ns-6);
dsource_buf=dsource_buf>0;
dsource=[dsource_buf,0,0,0,0,0,0];%生成一帧内的随机二进制比特流,此帧为发送端发送的数据
%----------FEC coder----------
d_trellis=poly2trellis(7,[133 171]);
out_fec=convenc(dsource,d_trellis);%编码,输入1bit输出2bit
%----------interleaving----------
k=0:163839; %first step interleaving
s=10240*mod(k,16)+floor(k/16);
out_interleaving(k+1)=out_fec(s+1);
for m=1:81920
out_interleaving1(1,m)=out_interleaving(2*m-1);
out_interleaving1(2,m)=out_interleaving(2*m);
end
modObj = modem.pskmod('M',4, 'PhaseOffset',pi/4,'SymbolOrder', 'binary', 'InputType', 'bit');
modulatedsig = modulate(modObj, out_interleaving1);
for m=1:40
data(1:2048,m)=modulatedsig(2048*(m-1)+1:2048*m);
end
%-------------------------------滤波器设计---------------------------------
rolloff=1;%滚降系数
L=4*fs_filter;%滤波器阶数
h_sqrt_nyquist = rcosine(1,fs_filter,'fir/sqrt',rolloff,L/(2*fs_filter));%产生滤波器
% pilot(h_sqrt_nyquist);grid on;hold on
%------------------------------发送端------------------------------------
%for m=0:2047
% for n=0:79
% d_source(m+1,n+1)=d_source(m+1,n+1)*exp(i*(m+n));
%end
%end
%---------------------------------------------------------------
%signal_up=(upsample(d_source.',fs_filter/2)).';%对信号上采样
%signal_filtered=zeros(N,length(signal_up)+length(h_sqrt_nyquist)-1);
%for m=1:2048
%signal_filtered(m,:)=conv(signal_up,h_sqrt_nyquist);
%end
%-----------------------------------------------------------------------------
signal_new=zeros(N,2*Ns);
signal_real=real(data);
signal_imag=imag(data);
for m=1:1024
signal_new(2*m-1,1:2:2*Ns-1)=signal_real(2*m-1,:);
signal_new(2*m-1,2:2:2*Ns)=signal_imag(2*m-1,:);
signal_new(2*m,1:2:2*Ns-1)=signal_imag(2*m,:);
signal_new(2*m,2:2:2*Ns)=signal_real(2*m,:);
end
signal_new_pilot=[pilot,signal_new];
signal_modulation=zeros(N,2*Ns+3);
for m=1:N
for n=1:2*Ns+3
signal_modulation(m,n)=signal_new_pilot(m,n)*exp(1i*(m+n-2)*pi/2);
end
end
%for n=1:N
%signal_modulation(n,:)=signal_new(n,:)*exp(1i*(n-1)*pi/2);
%signal_modulation(n,2:2:2*Ns)=signal_modulation(n,2:2:2*Ns)*exp(1i*pi/2);
%end
signal_ifft=zeros(2*Ns+3,N);
signal_filtered=zeros(2*Ns+3,length(h_sqrt_nyquist));
signal_carrier=zeros(2*Ns+3,length(h_sqrt_nyquist)+(2*Ns+3-1)*fs_filter/2);
for n=1:2*Ns+3
signal_ifft(n,:)=ifft(signal_modulation(:,n),N)*N;
signal_ifft(n,:)=circshift(signal_ifft(n,:).',-N/2*(n-1)).';
signal_filtered(n,1:N)=signal_ifft(n,:).*h_sqrt_nyquist(1:N);
signal_filtered(n,N+1:2*N)=signal_ifft(n,:).*h_sqrt_nyquist(N+1:2*N);
signal_filtered(n,2*N+1:3*N)=signal_ifft(n,:).*h_sqrt_nyquist(2*N+1:3*N);
signal_filtered(n,3*N+1:4*N)=signal_ifft(n,:).*h_sqrt_nyquist(3*N+1:4*N);
signal_filtered(n,4*N+1:(length(h_sqrt_nyquist)))=signal_ifft(n,(length(h_sqrt_nyquist)-4*N)).*h_sqrt_nyquist(4*N+1:(length(h_sqrt_nyquist)));
signal_filtered_shift=[zeros(1,(n-1)*fs_filter/2),signal_filtered(n,:)];
signal_carrier(n,:)=[signal_filtered_shift,zeros(1,length(signal_carrier)-length(signal_filtered_shift))];
end
signal_transmit=sum(signal_carrier);
%-------------------------------通过信道-------------------------------
out_channel=conv(h,signal_transmit);
power=var(signal_transmit);
sigma=sqrt(power/(10^(SNR(1,isnr)/10)));
power_db=10*log10(power);
awgn_signal_transmit=awgn(out_channel,SNR(isnr),power_db);
%----------------接收端------------------------------------
signal_received= awgn_signal_transmit(1,1:length(signal_transmit));
h_sqrt_nyquist_shift=zeros(2*Ns+3,length(signal_received));
signal_received_filtered=zeros(2*Ns+3,length(signal_received));
signal_received_filtered1=zeros(2*Ns+3,N*(L/fs_filter+(Ns+1.5)));
for n=1:2*Ns+3
h_sqrt_nyquist_temp=[zeros(1,(n-1)*fs_filter/2),h_sqrt_nyquist];
h_sqrt_nyquist_shift(n,:)=[h_sqrt_nyquist_temp,zeros(1,length(signal_received)-length(h_sqrt_nyquist_temp))];
signal_received_filtered(n,:)=h_sqrt_nyquist_shift(n,:).*signal_received;
signal_received_filtered1(n,:)=[signal_received_filtered(n,:),zeros(1,length(signal_received_filtered1)-length(signal_received_filtered))];
end
signal_received_filtered_new=zeros(2*Ns+3,N);
signal_received_fft=zeros(2*Ns+3,N);
signal_received_demodulation=zeros(2*Ns+3,N);
signal_received_demodulation1=zeros(2*Ns+3,N);
for n=1:2*Ns+3
for m=1:N
signal_received_filtered_new(n,m)=sum(signal_received_filtered1(n,1+(m-1):N:(N*(L/fs_filter+(Ns+1.5)-1)+(m-1))));
end
signal_received_fft(n,:)=fft(signal_received_filtered_new(n,:),N);
end
for m=1:N
for n=1:2*Ns+3
signal_received_demodulation(n,m)=signal_received_fft(n,m)*exp(-1i*(m+n-2)*pi/2);
end
end
%for n=1:N
%signal_received_demodulation(:,n)=signal_received_fft(:,n)*exp(-1i*(n-1)*pi/2);
%end
%signal_received_demodulation1(1:2:2*Ns-1,:)=real(signal_received_demodulation(1:2:2*Ns-1,:));
%signal_received_demodulation1(2:2:2*Ns,:)=real(signal_received_demodulation(2:2:2*Ns,:));
% variance_real=mean((signal_demod_real_filtered_down(:,1:N_symbol).'-real(signal).').^2);%实部信号不同载波上方差
% variance_imag=mean((signal_demod_imag_filtered_down(:,1:N_symbol).'-imag(signal).').^2);%虚部信号不同载波上方差
% variance_r_n(n_time)=mean(variance_real);
% variance_i_n(n_time)=mean(variance_imag);
signal_final=signal_received_demodulation.';
H_channel=zeros(1,N);
H_channel_final=zeros(1,N);
%--------------------信道均衡--------------------------------------------
H_channel(1,1)=signal_final(1,2)/(pilot(1,2)+1i*(pilot(1,1)*(-0.5004)+pilot(1,3)*(+0.5004)+pilot(2,1)*0.2501+pilot(2,2)*(-0.3183)+pilot(2,3)*0.2501));
H_channel(1,2)=signal_final(2,2)/(pilot(2,2)+1i*(pilot(1,1)*0.2501+pilot(1,2)*0.3183+pilot(1,3)*0.2501+pilot(2,1)*(-0.5004)+pilot(2,3)*(+0.5004)+pilot(3,1)*0.2501+pilot(3,2)*(-0.3183)+pilot(3,3)*0.2501));
H_channel(1,3)=signal_final(3,2)/(pilot(3,2)+1i*(pilot(2,1)*0.2501+pilot(2,2)*0.3183+pilot(2,3)*0.2501+pilot(3,1)*(-0.5004)+pilot(3,3)*(+0.5004)+pilot(4,1)*0.2501+pilot(4,2)*(-0.3183)+pilot(4,3)*0.2501));
for m=1:681
H_channel(1,3*m+1)=signal_final(3*m+1,2)/(pilot(3*m+1,2)+1i*(p
OQAM_OFDM_IAM2_youhua.rar_OFDM/OQAM_OFDM优化_OQAM信道估计_ofdm-oqam_信道
版权申诉
59 浏览量
2022-07-14
05:13:30
上传
评论
收藏 3KB RAR 举报
JaniceLu
- 粉丝: 78
- 资源: 1万+
最新资源
- 基于springboot+vue实现的在线考试系统+源代码+文档
- RTL8723DS 2022 版本 Linux驱动,android驱动 支持4.0-10x
- 要玩NDS的遊戲,必須要先下載三個bios檔案到你的檔案資料夾
- 各类型数据库4月排名,基于排名网站数据爬虫json结果
- 基于springboot+vue实现的在线考试系统+源代码+文档
- 淮北市杜集区人才补贴+生活补贴
- JAVA-JSP技术文档
- 课内实验02-决策表(共享单车月卡).docx
- 基于【React + Node+SpringBoot】疫情数据查看系统的设计与实现【源码+lw+部署+讲解】
- 基于【React + Node】云课堂系统设计与实现【源码+lw+部署+讲解】
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈