tomwalters@0
|
1 %
|
tomwalters@0
|
2 % function sig=gen_multidamp(carriers,halflifes,reprate,signal_length, sample_fq)
|
tomwalters@0
|
3 %
|
tomwalters@0
|
4 % Generates a superposition of damped sinusiod signals
|
tomwalters@0
|
5 %
|
tomwalters@0
|
6 % INPUT VALUES:
|
tomwalters@0
|
7 % carriers carrier frequences (vector)
|
tomwalters@0
|
8 % halflifes (vector, same length as carriers)
|
tomwalters@0
|
9 % reprate frequence of envelope
|
tomwalters@0
|
10 % signal_length in seconds !!!
|
tomwalters@0
|
11 % sample_fq sample frequence
|
tomwalters@0
|
12 %
|
tomwalters@0
|
13 % RETURN VALUE:
|
tomwalters@0
|
14 % sig object signal
|
tomwalters@0
|
15 %
|
tomwalters@0
|
16 % (c) 2003-2008, University of Cambridge, Medical Research Council
|
tomwalters@0
|
17 % Christoph Lindner
|
bleeck@3
|
18 % (c) 2011, University of Southampton
|
bleeck@3
|
19 % Maintained by Stefan Bleeck (bleeck@gmail.com)
|
bleeck@3
|
20 % download of current version is on the soundsoftware site:
|
bleeck@3
|
21 % http://code.soundsoftware.ac.uk/projects/aimmat
|
bleeck@3
|
22 % documentation and everything is on http://www.acousticscale.org
|
tomwalters@0
|
23
|
tomwalters@0
|
24 function sig=gen_multidamp(carriers,halflifes,reprate,signal_length, sample_fq)
|
tomwalters@0
|
25
|
tomwalters@0
|
26 if nargin < 5
|
tomwalters@0
|
27 sample_fq=16000;
|
tomwalters@0
|
28 end
|
tomwalters@0
|
29 if nargin < 4
|
tomwalters@0
|
30 signal_length=0.1;
|
tomwalters@0
|
31 end
|
tomwalters@0
|
32 if nargin < 3
|
tomwalters@0
|
33 reprate=100;
|
tomwalters@0
|
34 end
|
tomwalters@0
|
35 if nargin < 2
|
tomwalters@0
|
36 hlsteps=1;
|
tomwalters@0
|
37 halflifes=distributelogarithmic(0.064,0.0005,hlsteps);
|
tomwalters@0
|
38 halflifes=0.005;
|
tomwalters@0
|
39 else
|
tomwalters@0
|
40 hlsteps=length(halflifes);
|
tomwalters@0
|
41 end
|
tomwalters@0
|
42 if nargin < 1
|
tomwalters@0
|
43 carsteps=5;
|
tomwalters@0
|
44 carriers=distributelogarithmic(250,4000,carsteps);
|
tomwalters@0
|
45 else
|
tomwalters@0
|
46 carsteps=length(carriers);
|
tomwalters@0
|
47 end
|
tomwalters@0
|
48
|
tomwalters@0
|
49 sr = sample_fq;
|
tomwalters@0
|
50 % sr=2^14;
|
tomwalters@0
|
51 % sr=16000;
|
tomwalters@0
|
52 % signal_length=0.264-1/sr;
|
tomwalters@0
|
53 sig=signal(signal_length,sr);
|
tomwalters@0
|
54
|
tomwalters@0
|
55 for i=1:hlsteps
|
tomwalters@0
|
56 for j=1:carsteps
|
tomwalters@0
|
57 current_carrier=carriers(j);
|
tomwalters@0
|
58 halflife=halflifes(i);
|
tomwalters@0
|
59 sig=generatedampsinus(sig,current_carrier,reprate,1,halflife);
|
tomwalters@0
|
60
|
tomwalters@0
|
61 if j==1
|
tomwalters@0
|
62 gsig=sig;
|
tomwalters@0
|
63 else
|
tomwalters@0
|
64 gsig=gsig+sig;
|
tomwalters@0
|
65 end
|
tomwalters@0
|
66 end
|
tomwalters@0
|
67
|
tomwalters@0
|
68 if i==1
|
tomwalters@0
|
69 tsig=gsig;
|
tomwalters@0
|
70 else
|
tomwalters@0
|
71 tsig=append(tsig,gsig);
|
tomwalters@0
|
72 end
|
tomwalters@0
|
73
|
tomwalters@0
|
74 end
|
tomwalters@0
|
75 % savewave(tsig,'tsig');
|
tomwalters@0
|
76
|
tomwalters@0
|
77
|
tomwalters@0
|
78 sig=tsig; |