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

📄 ucafunction.m

📁 信道估计程序,对多用户,多入射角度情况进行仿真.
💻 M
字号:
%case 3,直接产生一个时隙864个chip,100个时隙,8天线8用户,时间3分钟

function H_all=UCAfunction(framenumber,K_users,M,casething,mode)

fs=1.28e6;
%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@可以改变


% casething=1;


%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@可以改变
switch casething
    case 1
        paths=2;   
        delay_tapscase=[0 4]; % timedelay of multipath
        am_tapscase=[0.953 0.3];%幅度衰减
        freq_doppercase=5.56;%多普勒频移
        %                 T_data_symbol=0.78125e-6;%chip duration
        %         lenghofframe=6400;% chips of 1 frame
        %         lenghofslot=864;%chips of 1 slot
        %        case_begin=1216;
        %        case_end=2079;
    T_data_symbol=16*0.78125e-6;%chip duration
                lenghofframe=400;% chips of 1 frame
                lenghofslot=55;%chips of 1 slot
                case_begin=77;
                case_end=131;
        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%case1
    case 2
        paths=3;
        delay_tapscase=[0 4 16];
        am_tapscase=[0.577 0.577 0.577 ];
        freq_doppercase=5.56;
               T_data_symbol=16*0.78125e-6;%chip duration
                lenghofframe=400;% chips of 1 frame
                lenghofslot=55;%chips of 1 slot
                case_begin=77;
                case_end=131;
%         T_data_symbol=0.78125e-6;%chip duration
%         lenghofframe=6400;% chips of 1 frame
%         lenghofslot=865;%chips of 1 slot
%         case_begin=1216;
%         case_end=2080;
        
        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%case2
    case 3
        paths=4;
        delay_tapscase=[0 1 2 3];
        am_tapscase=[0.73 0.517 0.366 0.253];
        freq_doppercase=222.4;
        T_data_symbol=0.78125e-6;%chip duration
        lenghofframe=6400;% chips of 1 frame
        lenghofslot=864;%chips of 1 slot
        case_begin=1216;
        case_end=2079;
        
        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%case3
end 
W=max(delay_tapscase)+1;
UEDOA=(2*(rand([paths,K_users])-0.5) * 45)/180*pi;  % 8个用户的初始角度化成弧度,初始角度-45:45
% AngleSpread=pi/2;  % 微小区
AngleSpread=0;
N1=24;
N2=25;
freq_doppler=freq_doppercase;%多普勒,系数每个用户都不变
f1=2*pi*freq_doppler*sin([1:24]*pi/48);%0,pi/2之内
f2=2*pi*freq_doppler*sin([1:25]*pi/50);
c1=1/sqrt(2*24)*ones(1,24);
c2=1/sqrt(2*25)*ones(1,25);

for k_num=1:K_users 
    UEDOA1=UEDOA(:,k_num);
    phi=2*pi*rand(paths,49); %随机相位,用于产生信道衰落,每个用户,每根天线都产生paths径的
    cita1 = phi(:, 1:24);  %cita每个用户都要变
    cita2 = phi(:, 25:49);
    for index_path=1:paths
        %%%% 产生100 frames 的数据 %%%%%
        for fra_num=1:framenumber 
            %%%%  产生 1 frame 的数据  %%%
            d_t=(fra_num-1)*lenghofframe+case_begin:(fra_num-1)*lenghofframe+case_end ;
            N = length(d_t);
            temp1 = zeros(1, N);
            temp2 = zeros(1, N);
            %             temp = zeros(1, N);
            for loop = 1 : N1
                temp1 = temp1 + c1(loop) * cos(f1(loop)*d_t*T_data_symbol+cita1(index_path,loop));
            end
            for loop = 1 : N2
                temp2 = temp2 + c2(loop) * cos(f2(loop)*d_t*T_data_symbol+cita2(index_path,loop));
            end
            temp = temp1 + sqrt(-1) * temp2;  % chips of 1 frame
            temp11((fra_num-1)*lenghofslot+1:fra_num*lenghofslot)=temp;   
        end
        rms=sqrt(mean(temp11.*conj(temp11)));%100个时隙归一 
        H_temp1(index_path,:)=am_tapscase(index_path)*temp11/rms;
        for fra_num=1:framenumber 
            %%%%每个时隙加一次角度%%%%%
            path_angle=UEDOA1(index_path)+2*(rand(1)-0.5) * AngleSpread;
            %%%%取出一个时隙%%%%%
            H_slot(index_path,:)= H_temp1(index_path,(fra_num-1)*lenghofslot+1:fra_num*lenghofslot); % get TS1 of 1 subframe
            %%%%%%%每个角度在每根天线上的循环%%%%
            for M_antenna=1:M
                if (M_antenna==1)
                    phase_delay=1;
                    
                else
                    if mode==0
                        %%%% U C A %%%%
                        angle_temp=path_angle+pi*(1/2-(M_antenna)/M);
                        distance=cos(angle_temp)*sqrt(2*(1-cos(2*pi*(M_antenna-1)/M)));
                        phase_delay=exp(-sqrt(-1)*2*pi*distance*0.6533);
                    else
                        phase_delay=exp(sqrt(-1)*pi*(M_antenna-1)*sin(path_angle));%每径对应乘上角度因子(ULA)
                    end
                end
                H_temp=H_slot(index_path,:)*phase_delay;  % 乘以相位因子
                H1(index_path,(fra_num-1)*lenghofslot+1:fra_num*lenghofslot,M_antenna)=H_temp;
            end %end of M_antenna
        end %end 100 frames loop
        if (M_antenna==1)
            H_all((k_num-1)*W+delay_tapscase(index_path)+1,:,1)=H1(index_path,:);
        else
            H_all((k_num-1)*W+delay_tapscase(index_path)+1,:,:)=H1(index_path,:,:);
        end
    end %end of index_path 
    clear   path_angle  angle_temp distance  H1  H_slot temp  temp1  temp11  H_temp  phase_delay ;
end

⌨️ 快捷键说明

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