Mercurial > hg > aimmat
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/aim-mat/tools/@signal/genfm.m Fri May 20 12:32:31 2011 +0100 @@ -0,0 +1,67 @@ +% method of class @signal +% function sig=genfm(sig,fc,f_mod,modindex,amplitude) +% +% INPUT VALUES: +% sig: original @signal with length and samplerate +% fc: carrier frequency (Hz) +% fmod: modulation frequency (Hz) +% modindex: modulation index b = +% maximum carrier frequency deviation / modulation frequency +% +% modulation depth = modulation index * modulation_frequency / carrier frequency +% modulation index = modulation_frequency * carrier frequency/100/modulation_depth; + +% +% RETURN VALUE: +% sig: @signal +% +% (c) 2007 ISVR University of Southampton +% Stefan Bleeck (bleeck@gmail.com) +% $Date: 2003/01/25 12:47:43 $ +% $Revision: 1.4 $ + +function sig=genfm(sig,fc,f_mod,modindex,amplitude) + +if nargin<5 + amplitude=1; +end +if nargin<4 + modindex=0.1; +end +if nargin<3 + f_mod=100; +end +if nargin<2 + fc=1000; +end + + + +sr=getsr(sig); +len=getlength(sig); + +d=getvalues(sig); +d=zeros(size(d)); + +t=0:1/sr:len-1/sr; + +fm=amplitude*cos(2*pi*fc.*t + modindex*sin(2*pi*f_mod.*t)); + +sig=setvalues(sig,fm); + + +% f1=fc-f_mod; +% f2=fc; +% f3=fc+f_mod; +% sin1=sinus(len,sr,f1,modgrad/2,0); +% sin2=sinus(len,sr,f2,1,0); +% sin3=sinus(len,sr,f3,modgrad/2,0); +% sig=sin1; +% sig=sig+sin2; +% sig=sig+sin3; + +name=sprintf('FM: modulation: %3.1f Hz, carrier: %4.1f kHz, mod index: %2.1f',f_mod,fc/1000,modindex); +sig=setname(sig,name); +% sig=scaletomaxvalue(sig,1); +% sig=RampAmplitude(sig,0.01); % baue eine Rampe +