git-svn-id: http://moon:8086/svn/matlab/trunk@32 801c6759-fa7c-4059-a304-17956f83a07c
121 lines
5.7 KiB
Matlab
121 lines
5.7 KiB
Matlab
% function drm_params(drm_mode, spec_occupancy)
|
|
function [params, spec_occ] = drm_params(mode, spec_occupancy)
|
|
|
|
SPEC_OCC_4k5 = 1;
|
|
SPEC_OCC_5k0 = 2;
|
|
SPEC_OCC_9k0 = 3;
|
|
SPEC_OCC_10k = 4;
|
|
SPEC_OCC_18k = 5;
|
|
SPEC_OCC_20k = 6;
|
|
|
|
DRM_MODE_A = 1;
|
|
DRM_MODE_B = 2;
|
|
DRM_MODE_C = 3;
|
|
DRM_MODE_D = 4;
|
|
DRM_MODE_E = 5;
|
|
|
|
ofdm_spec_occ_drm(DRM_MODE_A, SPEC_OCC_4k5) = struct('spec', '4k5', 'kmin', 2, 'kmax', 102);
|
|
ofdm_spec_occ_drm(DRM_MODE_A, SPEC_OCC_5k0) = struct('spec', '5k0', 'kmin', 2, 'kmax', 114);
|
|
ofdm_spec_occ_drm(DRM_MODE_A, SPEC_OCC_9k0) = struct('spec', '9k0', 'kmin', -102, 'kmax', 102);
|
|
ofdm_spec_occ_drm(DRM_MODE_A, SPEC_OCC_10k) = struct('spec', '10k', 'kmin', -114, 'kmax', 114);
|
|
ofdm_spec_occ_drm(DRM_MODE_A, SPEC_OCC_18k) = struct('spec', '18k', 'kmin', - 98, 'kmax', 314);
|
|
ofdm_spec_occ_drm(DRM_MODE_A, SPEC_OCC_20k) = struct('spec', '20k', 'kmin', -110, 'kmax', 350);
|
|
|
|
ofdm_spec_occ_drm(DRM_MODE_B, SPEC_OCC_4k5) = struct('spec', '4k5', 'kmin', 1, 'kmax', 91);
|
|
ofdm_spec_occ_drm(DRM_MODE_B, SPEC_OCC_5k0) = struct('spec', '5k0', 'kmin', 1, 'kmax', 103);
|
|
ofdm_spec_occ_drm(DRM_MODE_B, SPEC_OCC_9k0) = struct('spec', '9k0', 'kmin', - 91, 'kmax', 91);
|
|
ofdm_spec_occ_drm(DRM_MODE_B, SPEC_OCC_10k) = struct('spec', '10k', 'kmin', -103, 'kmax', 103);
|
|
ofdm_spec_occ_drm(DRM_MODE_B, SPEC_OCC_18k) = struct('spec', '18k', 'kmin', - 87, 'kmax', 279);
|
|
ofdm_spec_occ_drm(DRM_MODE_B, SPEC_OCC_20k) = struct('spec', '20k', 'kmin', - 99, 'kmax', 311);
|
|
|
|
ofdm_spec_occ_drm(DRM_MODE_C, SPEC_OCC_4k5) = struct('spec', '4k5', 'kmin', 0, 'kmax', 0);
|
|
ofdm_spec_occ_drm(DRM_MODE_C, SPEC_OCC_5k0) = struct('spec', '5k0', 'kmin', 0, 'kmax', 0);
|
|
ofdm_spec_occ_drm(DRM_MODE_C, SPEC_OCC_9k0) = struct('spec', '9k0', 'kmin', 0, 'kmax', 0);
|
|
ofdm_spec_occ_drm(DRM_MODE_C, SPEC_OCC_10k) = struct('spec', '10k', 'kmin', - 69, 'kmax', 69);
|
|
ofdm_spec_occ_drm(DRM_MODE_C, SPEC_OCC_18k) = struct('spec', '18k', 'kmin', 0, 'kmax', 0);
|
|
ofdm_spec_occ_drm(DRM_MODE_C, SPEC_OCC_20k) = struct('spec', '20k', 'kmin', - 67, 'kmax', 213);
|
|
|
|
ofdm_spec_occ_drm(DRM_MODE_D, SPEC_OCC_4k5) = struct('spec', '4k5', 'kmin', 0, 'kmax', 0);
|
|
ofdm_spec_occ_drm(DRM_MODE_D, SPEC_OCC_5k0) = struct('spec', '5k0', 'kmin', 0, 'kmax', 0);
|
|
ofdm_spec_occ_drm(DRM_MODE_D, SPEC_OCC_9k0) = struct('spec', '9k0', 'kmin', 0, 'kmax', 0);
|
|
ofdm_spec_occ_drm(DRM_MODE_D, SPEC_OCC_10k) = struct('spec', '10k', 'kmin', - 44, 'kmax', 44);
|
|
ofdm_spec_occ_drm(DRM_MODE_D, SPEC_OCC_18k) = struct('spec', '18k', 'kmin', 0, 'kmax', 0);
|
|
ofdm_spec_occ_drm(DRM_MODE_D, SPEC_OCC_20k) = struct('spec', '20k', 'kmin', - 43, 'kmax', 135);
|
|
|
|
ofdm_spec_occ_drm(DRM_MODE_E, SPEC_OCC_4k5) = struct('spec', '4k5', 'kmin', -106, 'kmax', 106);
|
|
ofdm_spec_occ_drm(DRM_MODE_E, SPEC_OCC_5k0) = struct('spec', '5k0', 'kmin', 0, 'kmax', 0);
|
|
ofdm_spec_occ_drm(DRM_MODE_E, SPEC_OCC_9k0) = struct('spec', '9k0', 'kmin', 0, 'kmax', 0);
|
|
ofdm_spec_occ_drm(DRM_MODE_E, SPEC_OCC_10k) = struct('spec', '10k', 'kmin', 0, 'kmax', 0);
|
|
ofdm_spec_occ_drm(DRM_MODE_E, SPEC_OCC_18k) = struct('spec', '18k', 'kmin', 0, 'kmax', 0);
|
|
ofdm_spec_occ_drm(DRM_MODE_E, SPEC_OCC_20k) = struct('spec', '20k', 'kmin', 0, 'kmax', 0);
|
|
|
|
W1024{DRM_MODE_A,:,:} = [228 341 455; 455 569 683; 683 796 910; 910 0 114; 114 228 341];
|
|
W1024{DRM_MODE_B,:,:} = [512 0 512 0 512; 0 512 0 512 0; 512 0 512 0 512];
|
|
W1024{DRM_MODE_C,:,:} = [465 372 279 186 93 0 931 838 745 652; 931 838 745 652 559 465 372 279 186 93];
|
|
W1024{DRM_MODE_D,:,:} = [366 439 512 585 658 731 805 878; 731 805 878 951 0 73 146 219; 73 146 219 293 366 439 512 585];
|
|
W1024{DRM_MODE_E,:,:} = [];
|
|
Z1024{DRM_MODE_A,:,:} = [0 81 248; 18 106 106; 122 116 31; 129 129 39; 33 32 111];
|
|
Z1024{DRM_MODE_B,:,:} = [0 57 164 64 12; 168 255 161 106 118; 25 232 132 233 38];
|
|
Z1024{DRM_MODE_C,:,:} = [0 76 29 76 9 190 161 248 33 108; 179 178 83 253 127 105 101 198 250 145];
|
|
Z1024{DRM_MODE_D,:,:} = [0 240 17 60 220 38 151 101; 110 70 78 82 175 150 106 25; 165 7 252 124 253 177 197 142];
|
|
Z1024{DRM_MODE_E,:,:} = [];
|
|
Q1024{DRM_MODE_A,:,:} = [36];
|
|
Q1024{DRM_MODE_B,:,:} = [12];
|
|
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));
|
|
|
|
drm_mode_index = 0;
|
|
switch mode
|
|
case 'A'
|
|
drm_mode_index = DRM_MODE_A;
|
|
|
|
case 'B'
|
|
drm_mode_index = DRM_MODE_B;
|
|
|
|
case 'C'
|
|
drm_mode_index = DRM_MODE_C;
|
|
|
|
case 'D'
|
|
drm_mode_index = DRM_MODE_D;
|
|
|
|
case 'E'
|
|
drm_mode_index = DRM_MODE_E;
|
|
end
|
|
if (drm_mode_index == 0)
|
|
error ('Invalid DRM mode!');
|
|
end
|
|
|
|
spec_occ_index = 0;
|
|
switch spec_occupancy
|
|
case '4k5'
|
|
spec_occ_index = SPEC_OCC_4k5;
|
|
|
|
case '5k0'
|
|
spec_occ_index = SPEC_OCC_5k0;
|
|
|
|
case '9k0'
|
|
spec_occ_index = SPEC_OCC_9k0;
|
|
|
|
case '10k'
|
|
spec_occ_index = SPEC_OCC_10k;
|
|
|
|
case '18k'
|
|
spec_occ_index = SPEC_OCC_18k;
|
|
|
|
case '20k'
|
|
spec_occ_index = SPEC_OCC_20k;
|
|
end
|
|
if (spec_occ_index == 0)
|
|
error ('Invalid spectrun occupancy!');
|
|
end
|
|
|
|
params = ofdm_params_drm(drm_mode_index);
|
|
spec_occ = ofdm_spec_occ_drm(drm_mode_index, spec_occ_index);
|