⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ofdm.m

📁 stbc_ofdm(time)
💻 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 + -