annotate aim-mat/tools/@signal/genfm.m @ 4:537f939baef0 tip

various bug fixes and changed copyright message
author Stefan Bleeck <bleeck@gmail.com>
date Tue, 16 Aug 2011 14:37:17 +0100
parents 20ada0af3d7d
children
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 %
bleeck@3 18 % This external file is included as part of the 'aim-mat' distribution package
bleeck@3 19 % (c) 2011, University of Southampton
bleeck@3 20 % Maintained by Stefan Bleeck (bleeck@gmail.com)
bleeck@3 21 % download of current version is on the soundsoftware site:
bleeck@3 22 % http://code.soundsoftware.ac.uk/projects/aimmat
bleeck@3 23 % documentation and everything is on http://www.acousticscale.org
bleeck@3 24
tomwalters@0 25
tomwalters@0 26 function sig=genfm(sig,fc,f_mod,modindex,amplitude)
tomwalters@0 27
tomwalters@0 28 if nargin<5
tomwalters@0 29 amplitude=1;
tomwalters@0 30 end
tomwalters@0 31 if nargin<4
tomwalters@0 32 modindex=0.1;
tomwalters@0 33 end
tomwalters@0 34 if nargin<3
tomwalters@0 35 f_mod=100;
tomwalters@0 36 end
tomwalters@0 37 if nargin<2
tomwalters@0 38 fc=1000;
tomwalters@0 39 end
tomwalters@0 40
tomwalters@0 41
tomwalters@0 42
tomwalters@0 43 sr=getsr(sig);
tomwalters@0 44 len=getlength(sig);
tomwalters@0 45
tomwalters@0 46 d=getvalues(sig);
tomwalters@0 47 d=zeros(size(d));
tomwalters@0 48
tomwalters@0 49 t=0:1/sr:len-1/sr;
tomwalters@0 50
tomwalters@0 51 fm=amplitude*cos(2*pi*fc.*t + modindex*sin(2*pi*f_mod.*t));
tomwalters@0 52
tomwalters@0 53 sig=setvalues(sig,fm);
tomwalters@0 54
tomwalters@0 55
tomwalters@0 56 % f1=fc-f_mod;
tomwalters@0 57 % f2=fc;
tomwalters@0 58 % f3=fc+f_mod;
tomwalters@0 59 % sin1=sinus(len,sr,f1,modgrad/2,0);
tomwalters@0 60 % sin2=sinus(len,sr,f2,1,0);
tomwalters@0 61 % sin3=sinus(len,sr,f3,modgrad/2,0);
tomwalters@0 62 % sig=sin1;
tomwalters@0 63 % sig=sig+sin2;
tomwalters@0 64 % sig=sig+sin3;
tomwalters@0 65
tomwalters@0 66 name=sprintf('FM: modulation: %3.1f Hz, carrier: %4.1f kHz, mod index: %2.1f',f_mod,fc/1000,modindex);
tomwalters@0 67 sig=setname(sig,name);
tomwalters@0 68 % sig=scaletomaxvalue(sig,1);
tomwalters@0 69 % sig=RampAmplitude(sig,0.01); % baue eine Rampe
tomwalters@0 70