1.算法仿真效果
matlab2022a仿真结果如下:
2.算法涉及理论知识概要
基于OFDM+QPSK和Turbo编码以及MMSE信道估计的无线图像传输是一种高效可靠的无线通信系统,广泛应用于图像传输领域。该系统利用正交频分复用(OFDM)技术,将图像数据分成多个子载波进行传输,利用QPSK调制进行信号调制,通过Turbo编码增强信号容错能力,并使用MMSE(最小均方误差)信道估计技术来减小信道传输误差。
3.MATLAB核心程序
for iii=1:length(datbin)/Iimage_len [i,iii] %% %以单天线方式产生测试信号 %msg = rand(Len*Nc/4,1)>=0.5; msg = [datbin(Iimage_len*(iii-1)+1:Iimage_len*iii)]'; %turbo编码 seridata1 = func_turbo_code(msg,N,M); seridata = [seridata1,zeros(1,Len*Nc-length(seridata1))]'; %QPSK映射 [Qpsk0,Dqpsk_pilot,symbol_bit] = func_piQPSK_mod(seridata); %变换为矩阵 Qpsk_matrix = reshape(Qpsk0,fftlen,Nc); [Pilot_in,pilot_num,Pilot_seq,pilot_space] = func_insert_pilot(Dqpsk_pilot,Qpsk_matrix,pilot_type,T,TG); Pilot_in = fft(Pilot_in); %sub carrier mapping Pilot_in = func_subcarrierMap(Pilot_in); %IFFT transform,产生OFDM信号 ifft_out = ifft(Pilot_in); %插入包含间隔 Guard_int = ceil(BWs/fftlen); Guard_int_ofdm = func_guard_interval_insert(ifft_out,fftlen,Guard_int); %将矩阵数据转换为串行进行输出 Guard_int_ofdm_out = reshape(Guard_int_ofdm,1,(fftlen+Guard_int)*(Nc+pilot_num)); %% %Step1:大规模MIMO信道 [Hm,Hmmatrix] = func_mychannels(Radius,Scale1,Scale2,Nh,Nv); %Step2:多径参数和大规模MIMO参数输入到信道模型中 %信道采样点数,每个调制符号采一个点 [passchan_ofdm_symbol] = func_conv_channels(Hmmatrix,Guard_int_ofdm_out,Nmultipath,Pow_avg,delay_multi,Fre_offset,timeval,iii); %Step3:噪声信道 Rec_ofdm_symbol = awgn(passchan_ofdm_symbol,SNR_dB(i),'measured'); %% %开始接收 Guard_int_remove = func_guard_interval_remove(Rec_ofdm_symbol,(fftlen+Guard_int),Guard_int,(Nc+pilot_num)); %FFT fft_out = fft(Guard_int_remove); %sub carrier demapping fft_out = func_desubcarrierMap(fft_out); fft_out = ifft(fft_out); %信道估计 %mmse [Sig_Lrmmse,Hs] = func_mmse_est(fft_out,pilot_space,Pilot_seq,pilot_num,delay_avg/timeval,4e-6/timeval,10^(SNR_dB(i)/10)); %解调 Dqpsk = func_pideMapping(Sig_Lrmmse,fftlen*Nc); %turbo解码 Dqpsk_decode = [func_turbo_decode(2*Dqpsk(1:end-(Len*Nc-length(seridata1)))-1,N,M)]'; %计算误码率 %err_num = Len*Nc/4-length(find(msg==Dqpsk_decode(1:Len*Nc/4))); %Error = Error + err_num; Rimages = [Rimages,[Dqpsk_decode(1:Len*Nc/4)]']; end