-
Notifications
You must be signed in to change notification settings - Fork 0
/
initMultipath.m
94 lines (74 loc) · 3.68 KB
/
initMultipath.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
function systemParam = initMultipath(systemParamIn)
%% Keep existing system parameters
% Guardamos la entrada de la funcion en la variable local asi no se
% pierden los valores existentes de la variable
systemParam = systemParamIn;
%% Define new system parameters
systemParam.multipath.tapAmplitude = [0.8, 0.2];
systemParam.multipath.tapDelay = [0, 4];
systemParam.multipath.Tm = 1; % [ms]
%Delta
% systemParam.multipath.tapAmplitude = [1];
% systemParam.multipath.tapDelay = [0];
% systemParam.multipath.Tm = 1; % [ms]
% Creo el .tapPhase aqui porque así lo marca el pdf referente al initMultipath
systemParam.multipath.tapPhase = zeros(1,0);
%% Initialize system
% Multipath type {'static-1','static-2','none'}
if strcmp(systemParam.multipath.type, 'none')~=1 && systemParam.ofdm.enabled == true
systemParam.multipath.enabled = true;
else
systemParam.multipath.enabled = false;
end
if strcmp(systemParam.multipath.type,'static-1')
systemParam.multipath.nTaps = 2;
% Revisar normalizacion de la amplitud
systemParam.multipath.tapNormalizedAmplitude = (1/sqrt(2))* systemParam.multipath.tapAmplitude;
% systemParam.multipath.tapNormalizedAmplitude =systemParam.multipath.tapAmplitude;
systemParam.multipath.tapNormalizedDelay = ceil(systemParam.multipath.tapDelay);
systemParam.multipath.tapPhase = [0, pi/4];
%systemParam.multipath.tapPhase = [0];
% %% Prueba BER delta
% systemParam.multipath.nTaps = 1;
% systemParam.multipath.tapNormalizedAmplitude = 1;
% systemParam.multipath.tapNormalizedDelay = 0;
% systemParam.multipath.tapPhase = 0;
%% Calculo de la respuesta impulsional
% La longitud de la respuesta impulsional debe tener en cuenta Tmuestreo (1/fm).
% Antes teniamos puesta la amplitud sin normalizar
systemParam.multipath.h = systemParam.multipath.tapNormalizedAmplitude.*exp(1i.*systemParam.multipath.tapPhase);
% Longitud de muestras del canal
%helem = ceil(max(systemParam.multipath.tapNormalizedDelay)/(1/systemParam.ofdm.samplingFrequency))+1;
%systemParam.multipath.h(systemParam.multipath.tapNormalizedDelay*(systemParam.ofdm.samplingFrequency)+1)= systemParam.multipath.tapAmplitude.*exp(1i.*systemParam.multipath.tapPhase);
systemParam.multipath.H = ifft(systemParam.multipath.h,systemParam.ofdm.nFft); % Nfft
%ploteamos respuesta temporal
%t = (-4:1:length(systemParam.multipath.h)-1);
% t = (-3:1:length(systemParam.multipath.h)-1);
% figure
% stem(t/systemParam.ofdm.samplingFrequency,cat(2,zeros(1,3),abs(systemParam.multipath.h)),'o');
% title('Multipath channel response');
figure
plot(abs(systemParam.multipath.H))
elseif strcmp(systemParam.multipath.type,'static-2')
disp('1');
else
systemParam.multipath.enabled=false;
end
%%systemParam.multipath.nTaps = 2;
%%systemParam.multipath.tapNormalizedAmplitude = (1/sqrt(2))* systemParam.multipath.tapAmplitude;
%%systemParam.multipath.tapNormalizedDelay = round(systemParam.multipath.tapDelay);
%%systemParam.multipath.tapPhase = [0,pi/4];
%% Nota de matlab que me he pasado x el forro:
% longitud del vector h-> longitud prefijo ciclico (long h(t)) = ceil (longitud ifft(OFDM)/(Tsymbol/Tguarda));
%% Apuntes
% La longitud de la respuesta impulsional debe tener en cuenta Tmuestreo (1/fm).
%% Show new parameters
if systemParam.multipath.enabled == true
disp('-- Multipath configuration ----------------------------------------------')
disp(['Multipath Type : ' num2str(systemParam.multipath.type)]);
elseif systemParam.multipath.enabled == false
systemParam.multipath.enabled=false;
else
error('The introduced type is not correct, please, insert it again');
end
end