• 大小: 2KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-04-19
  • 语言: Matlab
  • 标签: 导频  ofdm  MATLAB  

资源简介

OFDM系统的matlab实现,包括插入导频信号和循环前缀

资源截图

代码片段和文件信息

%load carrier_demod_out.mat;
%load matrix_h.mat;
% main_encode;
clc
clear all;
close all;
%
c=6;         % 子载波个数
bits=126;      % 每个信道的比特数
nl=c*bits;       % 总的传送比特数
nbitpersym  =6;   % number of bits per OFDM symbol (same as the number of subcarriers for BPSK)
nsym        = 126; % number of symbols
len_fft     = 9;   % fft size
sub_car     = 6;   % number of data subcarriers
EbNo        = 0:0.5:5;

EsNo= EbNo + 10*log10(6/9)+ 10*log10(6/14); % symbol to noise ratio

snr= EsNo - 10*log10(9/14); % snr as to be used by awgn fn
snr=0:0.5:5;
for z=1:length(snr)
s=round(rand(1504));
[xyuanHs]=generate_h();
           %信噪比

err=zeros(1length(snr));  %误码率

for yy=1:1000
m=252;
n=756;

%encode;              
j=3;          %列重
k=9;          %行重


%
M = modem.pskmod(2); % modulation object
encode_out = modulate(Mxyuan);
%
%save encode_out encode_out

s = reshape(encode_outbitsc);        % 串并变换
% pilot insertion

pilot_ins_data=[zeros(nsym1) s(:[1:nbitpersym/2]) zeros(nsym1) s(:[nbitpersym/2+1:nbitpersym]) zeros(nsym1)] ;

% fourier transform time doamain data and normalizing the data

IFFT_data = (9/sqrt(6))*ifft(fftshift(pilot_ins_data.‘)).‘;

% addition cyclic prefix

cylic_add_data = [IFFT_data(:[5:9]) IFFT_data].‘;

%并串变换
transmit=reshape(cylic_add_data 1nsym*14);

h=rayleighchan(1/1000010);

changain1=filter(hones(1nsym*14));
a=max(max(abs(changain1)));
changain1=changain1./a;
chan_data = changain1.*transmit;
 
     Es=1;
 r=(n-m)/n;
M=1;
Eb=Es/(r*M);
chan_awgn = awgn(chan_datasnr(z)‘measured‘); % awgn addition %加噪声

chan_awgn =a* chan_awgn./changain1; % assuming ideal channel estimation


sigma = sqrt(Eb/(2*(10^(snr(z)/10))));
 %ryuan = transmit + sigma * randn(1length(transmit));
%chan = rayleighchan(1/10000100);
%ryuan=filter(chanencode_out);
%
   
   % ryuan = awgn(transmitsnr(z)‘measured‘);;%串并变换
   rec = reshape(chan_awgn14nsym).‘; % serial to parallel coversion

cyclic_pre_rem = rec(:[6:14]);   %cyclic prefix removal
   FFT_recdata =(sqrt(6)/9)*fftshift(fft(cyclic_pre_rem.‘)).‘;    % freq domain transform

%  FFT_recdata = FFT_recdata./FFT_recdata1;

rem_pilot = FFT_recdata (:[6+[1:nbitpersym/2] 3+[nbitpersym/2+1:nbitpersym] ]); %pilot removal

rdout= reshape(rem_pilot.‘1nbitpersym*nsym);  % serial coversion 
 
   
     q=modem.pskdemod(2); %demodulation object

       demod_Data = demodulate(qrdout);  %demodulating the data
    %rdata=sign(real(uncarry));
    %rdata=sign(real(demod_Data)); 
     %num(t)=biterr(rdata+1s+1)/n;
    
    

%
liezhong=j;
hangzhong=k;

hanglieH=size(H);
hangH=hanglieH(1);              %H矩阵的行数
lieH=hanglieH(2);               %H矩阵的列数
ncol=zeros(liezhonglieH);      %存储每一列非零元“1”所在的行
nrow=zeros(hangHhangzhong);    %存储每一行非零元“1”所在的列

lie1wei=find(H);
for a=1:lieH
    for b=1:liezhong
        ncol(ba)=(lie1wei((a-1)*liezhong+b)-(a-1)*hangH);
    end
end

hang1wei=find

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3573  2013-05-21 15:37  OFDM_CP.m

----------- ---------  ---------- -----  ----

                 3573                    1


评论

共有 条评论