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
+