%用MATLAB实现OFDM调制、解调,其中假设OFDM信号包含6个子载波
%这里只是简单地说明了OFDM调制的方式,因此略去了交织、加窗等部分。
%OFDM是正交频分复用
%还是在帮《无线通信的MATLAB和FPGA实现》给的程序debug
clear all;
c=6; %子载波个数
bits=108; %每个信道的比特数
n=c*bits; %总的传送比特数
data=2*round(rand(1,n)-1);%产生信源数据
s=reshape(data,c,bits); %reshape用来串并转换
tp=1:0.1:(1+10.8)-0.1;
carrier=zeros(c,108);
bpsk_sig=zeros(c,108);
find=zeros(c,108);
for i=1:1:c
carrier(i,:)=cos(2*i*pi*tp);
bpsk_sig(i,:)=s(i,:).*carrier(i,:);
find(i,:)=ifft(bpsk_sig(i,:));
end
transmit=reshape(find,1,648);
snr=10; %信噪比10dB
rxdata=awgn(transmit,snr,'measured');
rec=reshape(rxdata,c,bits);
for i=1:c
rd(i,:)=fft(rec(i,:));
uncarry(i,:)=rd(i,:).*carrier(i,:);
end
rdata=sign(real(uncarry));
rdout=reshape(rdata,1,648);