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

📄 mimo_ofdm_channel.m

📁 用matlab对MIMO-OFDM通信系统的设计仿真的源代码
💻 M
字号:
function [rx_signal_time]=MIMO_OFDM_channel(MIMO_OFDM_system_par,tx_signal_time,...
    channel_matrix,channel_matrix_upsampling)
% Function MIMO_OFDM_transmiter +++++++++++++++++++++++++++++++++++++++++++++++++
% Realize the channel of MIMO OFDM system

% Input data:  MIMO_OFDM_system_par - parameters of MIMO OFDM system
%              tx_signal_time - transmit signal of MIMO OFDM system
%              channel_matrix - the original channel matrix 
%                                      (num_rx_antenna,num_tx_antenna,channel_length,num_frame_channel_inv)
%              channel_matrix_upsampling - the upsampling channel matrix
%         if pulse shaping is disabled, 0
%         if pulse shaping is enabled, (num_rx_antenna,num_tx_antenna,channel_length*pulse_oversampling,num_frame_channel_inv)

% Output data: rx_signal_time - receive signal of MIMO OFDM system
%         if pulse shaping is disabled, (num_rx_antenna,num_carriers+num_guard_length+channel_length-1,num_frame_channel_inv)
%         if pulse shaping is enabled, (num_rx_antenna,(num_carriers+num_guard_length+pulse_delay*2+channel_lenght-1)*pulse_oversampling,num_frame_channel_inv)

% Begin:  Feb, 2005
% Last edited: Feb.28, 2005
%   Feng Wan    

num_frame_channel_inv=MIMO_OFDM_system_par.num_frame_channel_inv;
num_tx_antenna=MIMO_OFDM_system_par.num_tx_antenna;
num_rx_antenna=MIMO_OFDM_system_par.num_rx_antenna;

pulse_type=MIMO_OFDM_system_par.pulse_type;
channel_model_type=MIMO_OFDM_system_par.channel_model_type;
channel_length=MIMO_OFDM_system_par.channel_length;

if(pulse_type==1)
    pulse_oversampling=MIMO_OFDM_system_par.pulse_oversampling;
    pulse_filt_order=MIMO_OFDM_system_par.pulse_filt_order;
    pulse_rolloff_factor=MIMO_OFDM_system_par.pulse_rolloff_factor;
    pulse_delay=MIMO_OFDM_system_par.pulse_delay;
    channel_length_upsampling=channel_length*pulse_oversampling;
end

%++++++++++++++++++++++++
% Make Receiver Signals
%++++++++++++++++++++++++
if(pulse_type==1)
    channel_length=channel_length_upsampling;
    channel_matrix=channel_matrix_upsampling;
end
rx_signal_time_ori=zeros(num_rx_antenna,size(tx_signal_time,2)+channel_length-1,size(tx_signal_time,3));
for nframe=1:num_frame_channel_inv   % Begin the processing for frequency-selective fading
    for n1=1:channel_length-1
        for n2=1:n1
            rx_signal_time_ori(:,n1,nframe)=rx_signal_time_ori(:,n1,nframe)+...
                channel_matrix(:,:,n2,nframe)*tx_signal_time(:,n1-n2+1,nframe);
        end
    end
    for n1=channel_length:size(tx_signal_time,2)
        for n2=1:channel_length
            rx_signal_time_ori(:,n1,nframe)=rx_signal_time_ori(:,n1,nframe)+...
                channel_matrix(:,:,n2,nframe)*tx_signal_time(:,n1-n2+1,nframe);
        end
    end
    for n1=size(tx_signal_time,2)+1:size(rx_signal_time_ori,2)
        for n2=n1-size(tx_signal_time,2)+1:channel_length
            rx_signal_time_ori(:,n1,nframe)=rx_signal_time_ori(:,n1,nframe)+...
                channel_matrix(:,:,n2,nframe)*tx_signal_time(:,n1-n2+1,nframe);   
        end
    end
end
if(pulse_type==1)
    rx_signal_time=rx_signal_time_ori(:,1:size(rx_signal_time_ori,2)-pulse_oversampling+1,:);
else
    rx_signal_time=rx_signal_time_ori;
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -