📄 ucafunction.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 + -