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
|