annotate aim-mat/tools/@signal/genfm.m @ 0:74dedb26614d

Initial checkin of AIM-MAT version 1.5 (6.4.2011).
author tomwalters
date Fri, 20 May 2011 12:32:31 +0100
parents
children 20ada0af3d7d
rev   line source
tomwalters@0 1 % method of class @signal
tomwalters@0 2 % function sig=genfm(sig,fc,f_mod,modindex,amplitude)
tomwalters@0 3 %
tomwalters@0 4 % INPUT VALUES:
tomwalters@0 5 % sig: original @signal with length and samplerate
tomwalters@0 6 % fc: carrier frequency (Hz)
tomwalters@0 7 % fmod: modulation frequency (Hz)
tomwalters@0 8 % modindex: modulation index b =
tomwalters@0 9 % maximum carrier frequency deviation / modulation frequency
tomwalters@0 10 %
tomwalters@0 11 % modulation depth = modulation index * modulation_frequency / carrier frequency
tomwalters@0 12 % modulation index = modulation_frequency * carrier frequency/100/modulation_depth;
tomwalters@0 13
tomwalters@0 14 %
tomwalters@0 15 % RETURN VALUE:
tomwalters@0 16 % sig: @signal
tomwalters@0 17 %
tomwalters@0 18 % (c) 2007 ISVR University of Southampton
tomwalters@0 19 % Stefan Bleeck (bleeck@gmail.com)
tomwalters@0 20 % $Date: 2003/01/25 12:47:43 $
tomwalters@0 21 % $Revision: 1.4 $
tomwalters@0 22
tomwalters@0 23 function sig=genfm(sig,fc,f_mod,modindex,amplitude)
tomwalters@0 24
tomwalters@0 25 if nargin<5
tomwalters@0 26 amplitude=1;
tomwalters@0 27 end
tomwalters@0 28 if nargin<4
tomwalters@0 29 modindex=0.1;
tomwalters@0 30 end
tomwalters@0 31 if nargin<3
tomwalters@0 32 f_mod=100;
tomwalters@0 33 end
tomwalters@0 34 if nargin<2
tomwalters@0 35 fc=1000;
tomwalters@0 36 end
tomwalters@0 37
tomwalters@0 38
tomwalters@0 39
tomwalters@0 40 sr=getsr(sig);
tomwalters@0 41 len=getlength(sig);
tomwalters@0 42
tomwalters@0 43 d=getvalues(sig);
tomwalters@0 44 d=zeros(size(d));
tomwalters@0 45
tomwalters@0 46 t=0:1/sr:len-1/sr;
tomwalters@0 47
tomwalters@0 48 fm=amplitude*cos(2*pi*fc.*t + modindex*sin(2*pi*f_mod.*t));
tomwalters@0 49
tomwalters@0 50 sig=setvalues(sig,fm);
tomwalters@0 51
tomwalters@0 52
tomwalters@0 53 % f1=fc-f_mod;
tomwalters@0 54 % f2=fc;
tomwalters@0 55 % f3=fc+f_mod;
tomwalters@0 56 % sin1=sinus(len,sr,f1,modgrad/2,0);
tomwalters@0 57 % sin2=sinus(len,sr,f2,1,0);
tomwalters@0 58 % sin3=sinus(len,sr,f3,modgrad/2,0);
tomwalters@0 59 % sig=sin1;
tomwalters@0 60 % sig=sig+sin2;
tomwalters@0 61 % sig=sig+sin3;
tomwalters@0 62
tomwalters@0 63 name=sprintf('FM: modulation: %3.1f Hz, carrier: %4.1f kHz, mod index: %2.1f',f_mod,fc/1000,modindex);
tomwalters@0 64 sig=setname(sig,name);
tomwalters@0 65 % sig=scaletomaxvalue(sig,1);
tomwalters@0 66 % sig=RampAmplitude(sig,0.01); % baue eine Rampe
tomwalters@0 67