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) + x*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); mag = sqrt(2); ref_a = mag*ones(1,length(k)); ref_c = k; for b=spec_occ.boost ref_a(find(ref_c == b)) = 2*mag; end 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;