Hi guys, can any one help me to detect this problem , the - TopicsExpress



          

Hi guys, can any one help me to detect this problem , the simulated BER curve for ofdm signal return unexpected value clc; clear all; close all; %.............................................................. % Initiation %.............................................................. no_of_data_bits = 4096%Number of bits per channel extended to 128 M =4 %Number of subcarrier channel n=256;%Total number of bits to be transmitted at the transmitter block_size = 64; %Size of each OFDM block to add cyclic prefix cp_len = floor(0.1 * block_size); %Length of the cyclic prefix snr_db=0:2:50; snr = 10.^(snr_db/10); % convert from dB %% start snr loop for calculation ber for snr_db=1:2:50; error=0; %............................................................ % Transmitter %......................................................... %......................................................... % Source generation and modulation %........................................................ % Generate random data source to be transmitted of length 64 data = randsrc(1, no_of_data_bits, 0:M-1); qpsk_modulated_data = pskmod(data, M); %............................................................. % Converting the series data stream into four parallel data stream to form % four sub carriers%% use for loop S2P = reshape(qpsk_modulated_data, no_of_data_bits/64,64) % S2P = reshape(qpsk_modulated_data, no_of_data_bits/M,64) %.................................................................. %.................................................................. % IFFT OF FOUR SUB_CARRIERS %................................................................. %.............................................................. number_of_subcarriers=4; cp_start=block_size-cp_len; for s=1:64; Sub_carrier(:,s) = S2P(:,s); % IFFT OF 64 SUB_CARRIERS ifft_Subcarrier(:,s) = ifft(Sub_carrier(:,s)); end %........................................................... %........................................................... % ADD-CYCLIC PREFIX %.......................................................... %............................................................ number_of_subcarriers=64; cp_start=block_size-cp_len; for i=1:number_of_subcarriers, ifft_Subcarrier(:,i) = ifft((S2P(:,i)),64)% 16 is the ifft point for j=1:cp_len, cyclic_prefix(j,i) = ifft_Subcarrier(j+cp_start,i) end Append_prefix(:,i) = vertcat( cyclic_prefix(:,i), ifft_Subcarrier(:,i)) % Appends prefix to each subcarriers end %Convert to serial stream for transmission [rows_Append_prefix cols_Append_prefix]=size(Append_prefix) len_ofdm_data = rows_Append_prefix*cols_Append_prefix % OFDM signal to be transmitted ofdm_signal = reshape(Append_prefix, 1, len_ofdm_data); % figure(6),plot(real(ofdm_signal)); xlabel(Time); ylabel(Amplitude); % title(OFDM Signal);grid on; %............................................................... %Passing time domain data through channel and AWGN %............................................................. channel = randn(1,2) + sqrt(-1)*randn(1,2); after_channel = filter(channel, 1, ofdm_signal); awgn_noise = awgn(zeros(1,length(after_channel)),snr_db); recvd_signal = awgn_noise+after_channel; % With AWGN noise % figure(7),plot(real(recvd_signal)),xlabel(Time); ylabel(Amplitude); % title(OFDM Signal after passing through channel);grid on; %........................................................... %OFDM receiver part %.......................................................... recvd_signal_paralleled = reshape(recvd_signal,rows_Append_prefix, cols_Append_prefix); %........................................................ %........................................................ % Remove cyclic Prefix %....................................................... %...................................................... recvd_signal_paralleled(1:cp_len,:)=[]; % recvd_signal(1:cp_len,:)=[]; %................................................... %................................................... % FFT Of recievied signal for i=1:number_of_subcarriers, % FFT fft_data(:,i) = fft(recvd_signal_paralleled(:,i),64); end % fft_data(:,s) = fft(recvd_signal(:,s),16); %................................ %.............................. % Signal Reconstructed %.................................. %.................................. % Conversion to serial and demodulationa recvd_serial_data = reshape(fft_data, 1,(64*64)); qpsk_demodulated_data = pskdemod(recvd_serial_data,4); for j=1: length(data); % data = randsrc(1, no_of_data_bits, 0:M-1); if (qpsk_demodulated_data(j) ~= data(j)) error = error + 1; % error counter end end error_count(snr_db)=error theorySer_QPSK(snr_db) = 0.5*erfc(sqrt(snr_db)./sqrt(2)); ber(snr_db)=error_count(snr_db)/256; end % figure(10), plot(snr_db,ber,k*,LineWidth,2); hold on % semilogy(snr,theorySer_QPSK,k*,LineWidth,2); plot(snr_db,theorySer_QPSK,k*,LineWidth,2);
Posted on: Mon, 13 Oct 2014 00:41:04 +0000

Trending Topics



Recently Viewed Topics




© 2015