📄 channel.m
字号:
function [channel_signal]=channel(frame_num,symnum,N,L,base_128g_201,freq_offset);
path_num=4; % num of propagation paths
len=length(base_128g_201);
h_Ray=zeros(1,N); % Rician channel impulse response function
%Rayleigh channel
hi_Ray=[0 0 0 0 0.258782 0.061831 0.150340 0.051534 ...
0.185074 0.400967 0.295723 0.350825 0.262909 0.225894 0.170996 0.149723 0.240140 ...
0.116587 0.221155 0.259730];
T_delay=[88 70 75 80];
% [1.003019 5.422091 0.518650 2.751772 0.602895 1.016585 0.143556 0.153832 ...
% 3.324866 1.935570 0.429948 3.228872 0.848831 0.073883 0.203952 0.194207 0.924450 ...
% 1.381320 0.640512 1.368671 ];
sitai=[0.8 0.3 4.855121 3.419109 5.86447 2.215894 3.758058 5.430202 3.952093 1.093586 5.775198 ...
0.154459 5.928383 3.053023 0.628578 2.128544 1.099463 3.462951 3.664773 2.833799 ...
3.334290 0.393889 0 0 0 0 0];
% x=0.4;
% rou=0;
% for i=1:1,
% rou=rou+hi_Ray(i)^2;
% end;
%kk_Ray=1;%1/(sqrt(rou));
%h_Ray=zeros(2,2*(N+L));
channel_signal=[];
muti_path_power=[];
main_path=[];
%freq_offset=0;
delay=0;
%h_Ray(1) =hi_Ray(1)*exp(-j*2*pi*sitai(1));
% h_Ray = zeros(1,256);
% for m = 1: path_num
% h_Ray(m+T_delay(m)) = hi_Ray(m)*exp(-j*2*pi*sitai(m));
% end;
% subplot(2,1,1);
% stem(abs(h_Ray(1:256)),'*');
% xlabel('n');ylabel('h(n)');
% title('rayleigh channel impulse response function h(n)');
% [Ray_h,Ray_w] = freqz(h_Ray,[1 zeros(1,255)],256,'whole');
% h_ft_Ric=fft(h_Ray,256);
% subplot(2,1,2);
% plot((abs(h_ft_Ric)));
% plot(Ray_w/pi,10*log10(abs(Ray_h)));
% xlabel('w');ylabel('H(w)');
% title('rayleigh channel transfer function H(w)');
%main path attenuation and frequency offset
base_128g_201_attenuation=base_128g_201.*exp(-j*2*pi*freq_offset*(0:len-1)/N);
base_128g_201_attenuation2= [zeros(1,delay),base_128g_201(1:length(base_128g_201))]; % no freq_offset
base_128g_201_attenuation_dalay(1:length(base_128g_201)+delay)=[zeros(1,delay),base_128g_201_attenuation(1:length(base_128g_201))];
p=[1 hi_Ray(1,1:path_num) ];
whole_path_power=(sum(p.^2))^0.5;
main_path_power_normalize=p(1,1)/whole_path_power;
for n=1:path_num;
multi_path_power_normalize(1,n)=p(1,n+1)/whole_path_power;
multi_path(n,:)=multi_path_power_normalize(1,n)*base_128g_201.*exp(-j*2*pi*sitai(1,n)*(0:len-1)/N); %multi_path magnititude attenuation and frequency offset
end;
%main_path_power=mean(abs(base_128g_201_attenuation_dalay).^2); %main_path mean power
%whole_path_power=main_path_power+sum(multi_path_power); %whole_path power
%multi_path_power_normalize=multi_path_power./whole_path_power; % normalize path power
%main_path_power_normalize=main_path_power/whole_path_power; %normalize main path power
temp=zeros(1,len);
for n=1:path_num;
temp(n,T_delay(n)+1:len)=multi_path(n,1:len-T_delay(n)) ;
end;
main_path=main_path_power_normalize*base_128g_201_attenuation_dalay;
Multipath=sum(temp);
channel_signal=main_path+[Multipath zeros(1,delay)];
%channel_signal= base_128g_201_attenuation_dalay;
channel_signal_no_freq=base_128g_201_attenuation2;
%% h_Ray(2)=kk_Ray*hi_Ray(8)*exp(-j*2*pi*sitai(8))+h_Ray(2);
% h_Ray(31)=kk_Ray*hi_Ray(12)*exp(-j*2*pi*sitai(12))+h_Ray(31);
% h_Ray(3)=kk_Ray*hi_Ray(16)*exp(-j*2*pi*sitai(16))+h_Ray(3);
% h_Ray(9)=kk_Ray*hi_Ray(17)*exp(-j*2*pi*sitai(17))+h_Ray(9);
% h_Ray(7)=kk_Ray*hi_Ray(19)*exp(-j*2*pi*sitai(19))+h_Ray(7);
% h_Ray(14)=kk_Ray*hi_Ray(20)*exp(-j*2*pi*sitai(20))+h_Ray(14);
%
% h_Ray(2)=kk_Ray*hi_Ray(14)*exp(-j*2*pi*sitai(14))+h_Ray(2);
% a=find(h_Ray~=0);
% figure(1)
% m=0:1:N-1;
% subplot(2,1,1);
% stem(m(1:520),abs(h_Ray(1:520)),'*');
% xlabel('n');ylabel('h(n)');
% title('Rayleigh channel impulse response function h(n)');
% grid;
%
% h_ft_Ray=fft(h_Ray,2048);
% subplot(2,1,2);
% plot(abs(h_ft_Ray));
% xlabel('k');ylabel('H(k)');
% title('Rayleigh channel transfer function H(k)');
% grid;
% save Rayleigh_channel.mat h_Ray;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -