欢迎访问yhm138的博客园博客, 你可以通过 [RSS] 的方式持续关注博客更新

MyAvatar

yhm138

HelloWorld!

MATLAB做OFDM正交频分复用

%用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);

posted @ 2021-03-01 13:46  yhm138  阅读(387)  评论(0编辑  收藏  举报