📄 ofdm.m
字号:
function [Pb]=ofdm(snr_in_dB)%----------------------------------------------------------------------%本程序在时域里对ofdm的性能进行仿真%----------------------------------------------------------------------M = 512000; % number of bits N = 512; % FFT/IFFT point numberG = 128; % CP point numberNumOfBlock = M/N; % the number of the OFDM blockEb=1; % energy per bitsnr=10^(snr_in_dB/10); % signal to noise ratiosgma=sqrt(Eb/(2*snr)); % noise standard variance%---------------------------------------------------------------------%采用的信道为6条径的指数衰落信道,抽样间隔为20ns%---------------------------------------------------------------------atten_power = exp(-[0:5]);path_delay = [0:5]*20; aver_power=atten_power/sum(atten_power);%进行功率归一化% generation of the data sourcetemp = rand(1,M); dsource = 2.*(temp>=0.5) - 1; s = sqrt(Eb).*dsource; % 对频域的信号进行IFFT变换,转化到时域分析time_temp = sqrt(N)*ifft(reshape(s,N,NumOfBlock));x = vertcat(time_temp(N-G+1:N,:),time_temp);%加上循环前缀克服多经衰落x = reshape(x,1,(N+G)*NumOfBlock);% AWGNn = sqrt(sgma)*(randn(1,(N+G)*NumOfBlock)+j*randn(1,(N+G)*NumOfBlock));h = zeros(length(path_delay),NumOfBlock);for k=1:6 h(k,:) = sqrt(aver_power(k)/2)*(randn(1,NumOfBlock) +j*randn(1,NumOfBlock));end for k=1:6 H(k,:)=reshape(repmat(h(k,:),N+G,1),1,(N+G)*NumOfBlock);endY=zeros(1,(N+G)*NumOfBlock);for k=1:1:6 C=H(k,:).*x; Y=Y+horzcat(zeros(1,path_delay(k)),C(1:(N+G)*NumOfBlock-path_delay(k)));endr=Y+n;y=reshape(r,N+G,NumOfBlock);%去掉循环前缀,把接收的信号进行DFT变换,转化到频域freq_y=fft(y(G+1:N+G,:))/sqrt(N);freq_y1=reshape(freq_y,1,N*NumOfBlock);h_time=zeros(N,NumOfBlock);%----------------------------------------------------------------------%把信道进行DFT变换转移到频域for i=1:1:6h_time(path_delay(i)+1,:)=h(i,:);endh_freq=fft(h_time)./sqrt(N);h1_freq=reshape(h_freq,1,N*NumOfBlock);%-----------------------------------------------------------------------z = freq_y1./h1_freq;%对接收的信号进行均衡 % detection decis = 2.*(real(z)>=0)-1; % real(z)<0 ==> -1 or real(z)>=0 ==> +1% probability of error calculationNumOfBitError = sum(decis ~= dsource); Pb = NumOfBitError / M;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -