本科毕业设计:基于MATLAB的OFDM系统仿真及分析(8)

2019-05-17 17:32

Tx_data = ofdm_modulation;

%信道======================================================= % The channel model is Gaussian (AWGN) +Multipath(时延为1) Tx_signal_power = var(Tx_data); linear_SNR = 10^(SNR/10);

noise_sigma = Tx_signal_power/linear_SNR; noise_scale_factor = sqrt(noise_sigma);

noise = randn(1, length(Tx_data))*noise_scale_factor; copy1=zeros(1,length(ofdm_modulation)); for i=2:length(ofdm_modulation) copy1(i)=ofdm_modulation(i-1); end

Rx_Data = Tx_data + noise; %RECEIVE

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< % 根据符号长度和符号数将串行的符号转换为并行的 % - 每一列是符号周期

Rx_Data_matrix = reshape(Rx_Data, IFFT_bin_length, symbols_per_carrier + 1); %对每一列信号做FFT得到频域信号 Rx_spectrum = fft(Rx_Data_matrix); % 画出接收到的OFDM信号频域代表

%--------1---------2---------3---------4---------5---------6---------7---------8 figure (7)

stem(0:IFFT_bin_length-1, abs(Rx_spectrum(1:IFFT_bin_length,2)),'b*-') grid on

axis ([0 IFFT_bin_length -0.5 1.5]) ylabel('Magnitude') xlabel('FFT Bin')

title('OFDM Receive Spectrum, Magnitude') figure (8)

plot(0:IFFT_bin_length-1, (180/pi)*angle(Rx_spectrum(1:IFFT_bin_length,2)), 'go') hold on

stem(carriers-1, (180/pi)*angle(Rx_spectrum(carriers,2)),'b*-')

stem(conjugate_carriers-1, (180/pi)*angle(Rx_spectrum(conjugate_carriers,2)),'b*-') axis ([0 IFFT_bin_length -200 +200]) grid on

ylabel('Phase (degrees)') xlabel('FFT Bin')

title('OFDM Receive Spectrum, Phase') % 抽取接收信号中有载波的点

Rx_carriers = Rx_spectrum(carriers,:)'; %画出每个接收符号分布图 figure (9)

Rx_phase_P = angle(Rx_carriers); Rx_mag_P = abs(Rx_carriers);

polar(Rx_phase_P, Rx_mag_P,'bd'); % 计算载波的相位 % - 弧度转换为角度

% - 归一化相位(0-360)

Rx_phase = angle(Rx_carriers)*(180/pi); phase_negative = find(Rx_phase < 0);

Rx_phase(phase_negative) = rem(Rx_phase(phase_negative)+360,360); % 用diff()计算相位差

Rx_decoded_phase = diff(Rx_phase);

phase_negative = find(Rx_decoded_phase < 0);

Rx_decoded_phase(phase_negative) = rem(Rx_decoded_phase(phase_negative)+360,360); %--------1---------2---------3---------4---------5---------6---------7---------8 % 相位转化为符号

base_phase = 360/2^bits_per_symbol; delta_phase = base_phase/2;

Rx_decoded_symbols= zeros(size(Rx_decoded_phase,1),size(Rx_decoded_phase,2)); for i = 1:(2^bits_per_symbol - 1) center_phase = base_phase*i;

plus_delta = center_phase+delta_phase; minus_delta = center_phase-delta_phase;

decoded=find((Rx_decoded_phase<=plus_delta)&(Rx_decoded_phase>minus_delta)); Rx_decoded_symbols(decoded)=i; end

% Convert the matrix into a serial symbol stream

Rx_serial_symbols=reshape(Rx_decoded_symbols',1,size(Rx_decoded_symbols,1)*size(Rx_decoded_symbols,2));

% Convert the symbols to binary for i = bits_per_symbol: -1: 1 if i ~= 1

Rx_binary_matrix(i,:) = rem(Rx_serial_symbols,2); Rx_serial_symbols = floor(Rx_serial_symbols/2); else

Rx_binary_matrix(i,:) = Rx_serial_symbols; end end

baseband_in=reshape(Rx_binary_matrix,1,size(Rx_binary_matrix,1)*size(Rx_binary_matrix,2)); % 查找错位比特

bit_errors = find(baseband_in ~= baseband_out); bit_error_count = size(bit_errors,2);


本科毕业设计:基于MATLAB的OFDM系统仿真及分析(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:PLC技术在高层立体停车库中的应用研究

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: