- Params: added fileds for k0, x, y - refactored getRefGain git-svn-id: http://moon:8086/svn/matlab/trunk@42 801c6759-fa7c-4059-a304-17956f83a07c
40 lines
999 B
Matlab
40 lines
999 B
Matlab
function [ref_c ref_p ref_a] = getRefGain(ofdm_params, spec_occ, s)
|
|
|
|
k0 = ofdm_params.k0;
|
|
x = ofdm_params.x;
|
|
y = ofdm_params.y;
|
|
|
|
s = mod(s, ofdm_params.nspf);
|
|
|
|
k = k0 + x*mod(s, y) + 2*y*(spec_occ.kmin:1:spec_occ.kmax);
|
|
k(find(k > spec_occ.kmax)) = [];
|
|
k(find(k < spec_occ.kmin)) = [];
|
|
|
|
n = mod(s, y);
|
|
m = floor(s/y);
|
|
p = (k - k0 - n*x)/(x*y);
|
|
|
|
ref_a = sqrt(2)*ones(1,length(k));
|
|
ref_c = k;
|
|
|
|
switch ofdm_params.mode
|
|
|
|
case 'A'
|
|
ref_p = mod(4*ofdm_params.Z(n+1,m+1) + p*ofdm_params.W(n+1,m+1) + p.*p*(1+s)*ofdm_params.Q, 1024);
|
|
|
|
case 'B'
|
|
ref_p = mod(4*ofdm_params.Z(n+1,m+1) + p*ofdm_params.W(n+1,m+1) + p.*p*(1+s)*ofdm_params.Q, 1024);
|
|
|
|
case 'C'
|
|
ref_p = mod(4*ofdm_params.Z(n+1,m+1) + p*ofdm_params.W(n+1,m+1) + p.*p*(1+s)*ofdm_params.Q, 1024);
|
|
|
|
case 'D'
|
|
ref_p = mod(4*ofdm_params.Z(n+1,m+1) + p*ofdm_params.W(n+1,m+1) + p.*p*(1+s)*ofdm_params.Q, 1024);
|
|
|
|
case 'E'
|
|
ref_c = [];
|
|
ref_p = [];
|
|
ref_a = [];
|
|
error ('Implement Mode E!');
|
|
|
|
end; |