function[n_ber]=sist_ofdm(n_EbNo_dB,n_u0,N,n_max_sim,n_mod_tipo,v_canal) Ng=((N-N*n_u0)/n_u0); Ng=ceil(Ng); load ENC4.mat %TRANSMISOR n_ldM=n_mod_tipo; v_bits=randint(n_max_sim*N*n_ldM,1); %Modulador [v_tx, n_ldM]= mapeador (v_bits,n_mod_tipo); m_tx=reshape(v_tx,N,n_max_sim); m_tx_ofdm=sqrt(N).*ifft(m_tx,N); %Inserción del Prefijo Cíclico m_tx_ofdm_guard=inser_pc(m_tx_ofdm,N,Ng,n_max_sim); v_ofdm_seq=m_tx_ofdm_guard(:); %CANAL n_sigma_sqr=10^(-n_EbNo_dB/10)*(N+Ng)/N/n_ldM; v_eq=fft(v_canal,N); v_ruido=sqrt(n_sigma_sqr/2)*(randn(size(v_ofdm_seq))+j*randn(size(v_ofdm_seq))); %Aplico el canal al primer símbolo v_ofdm_chan(1:N+Ng)=filter(v_canal,1,v_ofdm_seq(1:N+Ng))+v_ruido(1:N+Ng); %Aplico el canal a los símbolos restantes uno a uno for i=2:1:n_max_sim v_ofdm_chan((((i-1)*(N+Ng))+1):(i*(N+Ng)))=filter(v_canal,1,v_ofdm_seq((((i-1)*(N+Ng))+1):(i*(N+Ng))))+v_ruido((((i-1)*(N+Ng))+1):(i*(N+Ng))); end %RECEPTOR m_rx_ofdm=reshape(v_ofdm_chan,N+Ng,n_max_sim); %Extracción del Prefijo Cíclico m_rx_ofdm=extrac_pc(m_rx_ofdm,N,Ng,n_max_sim); m_rx=1/sqrt(N)*fft(m_rx_ofdm); %Matriz de ecualizacion m_eq=repmat(v_eq(:),1,size(m_rx,2)); m_rx=m_rx./m_eq; v_rx=m_rx(:); %Demodulador v_softbits_rx=demapeador(v_rx,n_mod_tipo); %Cálculo de la ber n_ber=mean(v_softbits_rx(:)~=v_bits(:));