- 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:
@@ -1,5 +1,2 @@
|
||||
function index = c2i(N, carriers)
|
||||
ri = [];
|
||||
ri = [ri find(carriers == 0)];
|
||||
carriers(ri) = [];
|
||||
index = mod(carriers, N) + 1;
|
||||
|
||||
@@ -65,11 +65,11 @@ Q1024{DRM_MODE_C,:,:} = [12];
|
||||
Q1024{DRM_MODE_D,:,:} = [14];
|
||||
Q1024{DRM_MODE_E,:,:} = [];
|
||||
|
||||
ofdm_params_drm(DRM_MODE_A) = struct('mode', 'A', 'nu', 288, 'ng', 32, 'nspf', 15, 'W', W1024(DRM_MODE_A), 'Z', Z1024(DRM_MODE_A), 'Q', Q1024(DRM_MODE_A));
|
||||
ofdm_params_drm(DRM_MODE_B) = struct('mode', 'B', 'nu', 256, 'ng', 64, 'nspf', 15, 'W', W1024(DRM_MODE_B), 'Z', Z1024(DRM_MODE_B), 'Q', Q1024(DRM_MODE_B));
|
||||
ofdm_params_drm(DRM_MODE_C) = struct('mode', 'C', 'nu', 176, 'ng', 64, 'nspf', 20, 'W', W1024(DRM_MODE_C), 'Z', Z1024(DRM_MODE_C), 'Q', Q1024(DRM_MODE_C));
|
||||
ofdm_params_drm(DRM_MODE_D) = struct('mode', 'D', 'nu', 112, 'ng', 88, 'nspf', 24, 'W', W1024(DRM_MODE_D), 'Z', Z1024(DRM_MODE_D), 'Q', Q1024(DRM_MODE_D));
|
||||
ofdm_params_drm(DRM_MODE_E) = struct('mode', 'E', 'nu', 27, 'ng', 3, 'nspf', 40, 'W', W1024(DRM_MODE_E), 'Z', Z1024(DRM_MODE_E), 'Q', Q1024(DRM_MODE_E));
|
||||
ofdm_params_drm(DRM_MODE_A) = struct('mode', 'A', 'nu', 288, 'ng', 32, 'nspf', 15, 'W', W1024(DRM_MODE_A), 'Z', Z1024(DRM_MODE_A), 'Q', Q1024(DRM_MODE_A), 'x', 4, 'y', 5, 'k0', 2);
|
||||
ofdm_params_drm(DRM_MODE_B) = struct('mode', 'B', 'nu', 256, 'ng', 64, 'nspf', 15, 'W', W1024(DRM_MODE_B), 'Z', Z1024(DRM_MODE_B), 'Q', Q1024(DRM_MODE_B), 'x', 2, 'y', 3, 'k0', 1);
|
||||
ofdm_params_drm(DRM_MODE_C) = struct('mode', 'C', 'nu', 176, 'ng', 64, 'nspf', 20, 'W', W1024(DRM_MODE_C), 'Z', Z1024(DRM_MODE_C), 'Q', Q1024(DRM_MODE_C), 'x', 2, 'y', 2, 'k0', 1);
|
||||
ofdm_params_drm(DRM_MODE_D) = struct('mode', 'D', 'nu', 112, 'ng', 88, 'nspf', 24, 'W', W1024(DRM_MODE_D), 'Z', Z1024(DRM_MODE_D), 'Q', Q1024(DRM_MODE_D), 'x', 1, 'y', 3, 'k0', 1);
|
||||
ofdm_params_drm(DRM_MODE_E) = struct('mode', 'E', 'nu', 27, 'ng', 3, 'nspf', 40, 'W', W1024(DRM_MODE_E), 'Z', Z1024(DRM_MODE_E), 'Q', Q1024(DRM_MODE_E), 'x', 4, 'y', 4, 'k0', 2);
|
||||
|
||||
drm_mode_index = 0;
|
||||
switch mode
|
||||
|
||||
+27
-28
@@ -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;
|
||||
Reference in New Issue
Block a user