function PSD=setupPSD_def2PSD(maskdef, method, f, nosignal,capval); %% =========================================================================== %setupPSD_def2PSD - Help function to generate a PSD description % from a simple list % % Parameter: maskdef PSD-mask definition to use % Parameter: method Interpolation method ('Linear' or 'Log-Linear') % Parameter: nosignal Signal level when not sending % Parameter: capval Maximum signal level % Returns: PSD PSD plan % % Example(s): % % Algorithmic details: % % Reference: %% =========================================================================== %% =========================================================================== % Copyright (C): % 2002-2003 by Forschungszentrum Telekommunikation Wien, Austria; % All rights reserved. % Project : FTW's xDSLsimu % Author(s) : Tomas Nordstrom (Tomas.B.Nordstrom@@Telia.se) % % CVS: $Id: setupPSD_def2PSD.m,v 3.2 2003/03/07 16:50:28 tono Exp $ %% =========================================================================== % Change History % 2002-10-11 (ToNo) Created, that is, made an internal function external % 2003-01-07 (ToNo) Fixed empty vector problem (for octave) %% =========================================================================== maskdef=[f(1) nosignal maskdef f(length(f)) nosignal];% Fix glitch in last band freq=maskdef(1:2:length(maskdef)); level=maskdef(2:2:length(maskdef)); bigindex=level>capval; level(bigindex)=capval.*ones(1,sum(bigindex)); % Cap the top maskdef(2:2:length(maskdef))=level; idx(1) = max(find(freq<=f(1))); idx(2) = min(find(freq>=f(2)))-1; for nn =1:2 switch method case 'Linear' tmp=(f(nn)-freq(idx(nn)))/(freq(idx(nn)+1)-freq(idx(nn))); case 'Log-Linear' tmp=(log(f(nn))-log(freq(idx(nn))))/(log(freq(idx(nn)+1))-log(freq(idx(nn)))); otherwise fprintf('Undefined Interpolation'); break; end; PSD(nn) = level(idx(nn))+(level(idx(nn)+1)-level(idx(nn)))*tmp; end; if idx(1)==idx(2) PSD = [f(1) PSD(1) f(2) PSD(2)]; else PSD = [f(1) PSD(1) maskdef(idx(1)*2+1:idx(2)*2) f(2) PSD(2)]; end;