📄 chan_multipath.m
字号:
function [out_data] = chan_multipath(in_data,fs,vec_delay,vec_amp_dB)
%
% vec_delay: delay time vector;
% vec_amp: amplify vector through multipath;
% convert the delay time vector to delay sample point number
vec_delaynum = floor(vec_delay .* fs);
% vec_delaynum(1,1) = 0;
vec_amp = 10 .^ (vec_amp_dB ./ 20);
%vec_amp = vec_amp_dB;
% vec_amp(1,1) = 1; % the first one is the main path
len_delay = length(vec_delay);
% max_delay = vec_delaynum(1,len_delay); % the maxinum of delay
len_data = length(in_data);
out_data = zeros(1,len_data);
for iii =1:len_delay
in_data1 = [zeros(1,vec_delaynum(iii)) in_data] .* vec_amp(iii);
out_data = out_data + in_data1(1:len_data);
end
% to be check whether the length of vec_amp_dB is equal to vec_delay;
% there is only one path
% if len_delay == 1; out_data = in_data; return;
% else in_data = [zeros(1,max_delay),in_data]; % add zeros to in_data head
% end;
%
% for iii = 1:1:len_data; %多径叠加
% out_data(1,iii) = in_data(1,iii + max_delay);
% for jjj = 2:1:len_delay;
% % out_data(1,iii) = out_data(1,iii) + in_data(1,iii + max_delay - vec_delaynum(1,jjj)) .* vec_amp(1,jjj);
% out_data(1,iii) = out_data(1,iii) + in_data(1,iii + max_delay - vec_delaynum(1,jjj)) .* vec_amp(1,jjj);
% end
% end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -