(完整版)OFDMmatlab实现_第1页
(完整版)OFDMmatlab实现_第2页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、clear all;close all;carrier_cou nt=200;% 子载波数symbols_per_carrier=12;%每子载波含符号数bits_per_symbol=4;% 每符号含比特数,16QAM 调制IFFT_bin_le ngth=512;%FFT 点数PrefixRatio=1/4;%保护间隔与 OFDM 数据的比例 1/61/4GI=PrefixRatio*IFFT_bin_length ;%每一个 OFDM 符号添加的循环前缀长度为1/4*IFFT bin le ngth即保护间隔长度为 128beta=1/32;%窗函数滚降系数GIP=beta*(IFFT

2、bin le ngth+GI);%循环后缀的长度 20SNR=15; % 信噪比 dB%=%=信号产生=baseba nd_out_le ngth = carrier_co unt * symbols_per_carrier * bits_per_symbol;%所输入的比特数目carriers = (1:carrier_co unt) + (floor(IFFT_b in_len gth/4) - floor(carrier_co un t/2);%共轭对称子载波映射复数数据对应的 IFFT 点坐标conjugate carriers = IFFT bin le ngth - carrier

3、s + 2;%共轭对称子载波映射共轭复数对应的 IFFT 点坐标ran d( state,0);baseba nd_out=rou nd(ra nd(1,baseba nd_out_le ngth);%输出待调制的二进制比特流%=16QAM 调制=complex carrier matrix=qam16(baseba nd out);%歹 U 向量complex carrier matrix=reshape(complex carrier matrix,carrier co un t,symbols per carrier);%symbols per carrier*carrier co un

4、t矩阵figure(1);plot(complex carrier matrix,*r);%16QAM调制后星座图axis(-4, 4, -4, 4);grid on%=IFFT=IFFT modulation=zeros(symbols per carrier,IFFT bin length);%添 0 组成IFFT bin le ngth IFFT运算IFFT_modulation(:,carriers ) = complex_carrier_matrix ;% 未添加导频信号 ,子载波映射在 此处IFFT modulati on (:,conjugate carriers ) = con

5、j(complex carrier matrix);%共轭复数映射%=figure(2);stem(O:IFFT bin le ngth-1, abs(IFFT modulatio n(2,1:IFFT bin le ngth),b*-)%第一个OFDM 符号的频谱grid onaxis (0 IFFT bin length -0.5 4.5);ylabel(Mag nitude);xlabel(IFFT Bi n);title(OFDM Carrier Frequency Magnitude);figure(3);plot(0:IFFT bin length-1, (180/pi)*angl

6、e(IFFT modulation(2,1:IFFT bin length), go)hold onstem(0:carriers-1, (180/pi)*angle(IFFT_modulation(2,1:carriers),b*-);%第一个 OFDM 符号的相位stem(0:conjugate_carriers-1,(180/pi)*a ngle(IFFT_modulatio n(2,1:conjugate_carriers),b*-);axis (0 IFFT bin le ngth -200 +200)grid onylabel(Phase (degrees)xlabel(IFFT

7、Bi n)title(OFDM CarrierPhase) %=signal_after_IFFT=ifft(IFFT_modulation,IFFT_bin_length,2);%OFDM调制即 IFFT 变换time_wave_matrix =sig nal_after_IFFT;%时域波形矩阵,行为每载波所含符号数,列ITTF点数,N 个子载波映射在其内,每一行即为一个OFDM 符号figure(4);subplot(3,1,1);plot(0:IFFT bin le ngth-1,time wave matrix(2,:);%第一个符号的波形axis(0, 700,-0.2, 0.2)

8、;grid on;ylabel(Amplitude);xlabel(Time);title(OFDM Time Signal, One Symbol Period);%= %=添加循环前缀与后缀XX=zeros(symbols_per_carrier,IFFT_bine ngth+GI+GIP);for k=1:symbols per carrier;for i=1:IFFT bin le ngth;XX(k,i+GI)=sig nal after IFFT(k,i);endfor i=1:GI;XX(k,i)=sig nal_after_IFFT(k,i+IFFT_bin_le ngth-G

9、I);%添加循环前缀endfor j=1:GIP;XX(k,IFFT bin le ngth+GI+j)=sig nal after IFFT(k,j);%添加循环后缀endendtime_wave_matrix_cp=XX;%添加了循环前缀与后缀的时域信号矩阵,此时一个 OFDM 符号长度为 IFFT_bin_length+GI+GIP=660subplot(3,1,2);plot(0:le ngth(time_wave_matrix_cp)-1,time_wave_matrix_cp(2,:);%第一个符号添加循环前缀后的波形axis(0, 700,-0.2, 0.2);grid on;y

10、label(Amplitude);xlabel(Time);title(OFDM Time Signal with CP, One Symbol Period);%=OFDM 符号加窗wi ndowed time wave matrix cp=zeros(1,IFFT binen gth+GI+GIP);for i = 1:symbols per carrierwi ndowed time wave matrix cp(i,:)=real(time_wave_matrix_cp(i,:).*rcoswi ndow(beta,IFFT_bin_le ngth+GI);%加窗升余弦窗endsubp

11、lot(3,1,3);plot(0:IFFT bin le ngth-1+GI+GIP,wi ndowed time wave matrix cp(2,:);%第一个符号的波形axis(0, 700, -0.2, 0.2);grid on;ylabel(Amplitude);xlabel(Time);title(OFDM Time Signal Apply a Window , One Symbol Period);=生成发送信号,并串变换wi ndowed Tx data=zeros(1,symbols per carrier*(IFFT b inen gth+GI)+GIP);wi ndo

12、wed Tx data(1:IFFT bi n en gth+GI+GIP)=wi ndowed time wave matrix cp(1,:); for i = 1:symbolsper carrier-1 ;wi ndowed_Tx_data(IFFT_bine ngth+GI)*i+1:(IFFT_bine ngth+GI)*(i+1)+GIP)=wi ndowed_time_wave_matrix_cp(i+1,:);% 并串转换,循环后缀与循环前缀相叠加end%=Tx data withoutwi ndow=reshape(time_wave_matrix_cp,(symbols_

13、per_carrier)*(IFFT_bi n_len gth+GI+GIP),1);%没有加窗,只添加循环前缀与后缀的串行信号Tx_data=reshape(w in dowed_time_wave_matrix_cp,(symbols_per_carrier)*(IFFT_b in_len gth+GI+GIP),1);%加窗后 循环前缀与后缀不叠加的串行信号%=temp time1 = (symbols per carrier)*(IFFT bin length+GI+GIP);%加窗后循环前缀与后缀不叠加发送总位数figure (5)subplot(2,1,1);plot(0:temp

14、_time1-1,Tx_data );%循环前缀与后缀不叠加发送的信号波形grid onylabel(Amplitude (volts)xlabel(Time (samples)title(OFDM Time Sig nal)temp time2 =symbols per carrier*(IFFT b inen gth+GI)+GIP;subplot(2,1,2);plot(0:temp time2-1,wi ndowed Tx data);%循环后缀与循环前缀相叠加发送信号波形grid on ylabel(Amplitude (volts) xlabel(Time (samples)tit

15、le(OFDM Time Sig nal)%= 未加窗发送信号频谱symbols_per_average = ceil(symbols_per_carrier/5);%符号数的 1/5, 10 行avg_temp_time = (IFFT_bin_length+GI+GIP)*symbols_per_average;%点数,10 行数据,10 个符号averages = floor(temp_time1/avg_temp_time);average fft(1:avg temp time) = 0;%分成 5 段for a = 0:(averages-1)subset_ofdm = Tx_da

16、ta_withoutwi ndow(a*avg_temp_time)+1):(a+1)*avg_temp_time);%subset_ofdm_f = abs(fft(subset_ofdm);%将发送信号分段求频谱average fft = average fft + (subset ofdm f/averages);%总共的数据分为 5 段,分段进行FFT,平均相加endaverage fft log = 20*log10(average fft);figure (6)subplot(2,1,1);plot(0:(avg_temp_time-1)/avg_temp_time, averag

17、e_fft_log)%归一化0/avg_temp_time : (avg_temp_time-1)/avg_temp_timehold onplot(0:1/IFFT bin le ngth:1, -35, rd)grid onaxis(0 0.5 -40 max(average_fft_log)ylabel(Mag ni tude (dB)xlabel(Normalized Freque ncy (0.5 = fs/2)title(OFDM Signal Spectrum without windowing)%=加窗的发送信号频谱= symbols peraverage = ceil(sym

18、bols per carrier/5);%符号数的 1/5, 10 行avg_temp_time = (IFFT_bin_length+GI+GIP)*symbols_per_average;%点数,10 行数据,10 个符号averages = floor(temp time1/avg temp time);average fft(1:avg temp time) = 0;%分成 5 段for a = 0:(averages-1)subset ofdm = Tx data(a*avg temp time)+1):(a+1)*avg temp time);%利用循环前缀后缀未叠加的串行加窗信号

19、计算频谱subset_ofdm_f = abs(fft(subset_ofdm);%分段求频谱average_fft = average_fft + (subset_ofdm_f/averages);% 总共的数据分为 5 段,分段进行FFT,平均相加endaverage fft log = 20*log10(average fft);subplot(2,1,2)plot(0:(avg temp time-1)/avg temp time, average fft log)%归一化O/avg temp time:(avg temp time-1)/avg temp timehold onplo

20、t(0:1/IFFT bin le ngth:1, -35, rd)grid onaxis(0 0.5 -40 max(average_fft_log)ylabel(Mag ni tude (dB)xlabel(Normalized Freque ncy (0.5 = fs/2)title(Wi ndowed OFDM Sig nal Spectrum)%=添加噪声Tx sig nal power = var(w in dowed Tx data);%发送信号功率lin ear_SNR=10A(SNR/10);%线性信噪比no ise_sigma=Tx_sig nal_power/li nea

21、r_SNR;noise_scale_factor = sqrt(noise_sigma);%标准差 sigmano ise=ra ndn( 1,(symbols_per_carrier)*(IFFT_b in_len gth+GI)+GIP)* no ise_scale_factor;%产生正态分布噪声序列%noise=wgn(1,length(windowed_Tx_data),noise_sigma,complex);%产生复 GAUSS 白噪声信号Rx_data=wi ndowed_Tx_data +no ise;%接收到的信号加噪声%=接收信号串/并变换去除前缀与后缀Rx_data_m

22、atrix=zeros(symbols_per_carrier,IFFT_b in_len gth+GI+GIP);for i=1:symbols per carrier;Rx_data_matrix(i,:)=Rx_data(1,(i-1)*(IFFT_bin_le ngth+GI)+1:i*(IFFT_bin_le ngth+GI)+GIP);%串并变换endRx_data_complex_matrix=Rx_data_matrix(:,GI+1:IFFT_bin_le ngth+GI);%去除循环前缀与循环后缀,得到有用信号矩阵%=%Rx_carriers=Y1(:,carriers);% 除去 IFFT/FFT 变换添加的 0,选出映射的子载波%=%OFDM 解码 16QAM 解码%=FFT 变换=Y1=fft(Rx_data_comp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论