- c2i: don't remove DC bin

- Params: added fileds for k0, x, y
- refactored getRefGain

git-svn-id: http://moon:8086/svn/matlab/trunk@42 801c6759-fa7c-4059-a304-17956f83a07c
This commit is contained in:
2015-04-29 19:26:05 +00:00
parent e0b9373318
commit dd733db287
3 changed files with 32 additions and 36 deletions
+27 -28
View File
@@ -1,41 +1,40 @@
function [ref_c ref_p ref_a] = getRefGain(spec_occ, ofdm_params, sym_count)
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_c = [];
ref_p = [];
ref_a = [];
error ('Implement Mode A!');
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'
k0 = 1;
x = 2;
y = 3;
k = (spec_occ.kmin:1:spec_occ.kmax);
ref_c = 1 + 2*mod(sym_count,3)+6*k;
ref_c(find(ref_c > spec_occ.kmax)) = [];
ref_c(find(ref_c < spec_occ.kmin)) = [];
n = mod(sym_count, y);
m = floor(sym_count/y);
p = (ref_c - k0 - n*x)/(x*y);
ref_p = mod(4*ofdm_params.Z(n+1,m+1) + p*ofdm_params.W(n+1,m+1) + p.*p*(1+sym_count)*ofdm_params.Q, 1024);
ref_a = sqrt(2)*ones(1,length(ref_c));
case 'C'
ref_c = [];
ref_p = [];
ref_a = [];
error ('Implement Mode 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 '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_c = [];
ref_p = [];
ref_a = [];
error ('Implement Mode 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;