comparison userProgramsTim/mellin_trafo.m @ 38:c2204b18f4a2 tip

End nov big change
author Ray Meddis <rmeddis@essex.ac.uk>
date Mon, 28 Nov 2011 13:34:28 +0000
parents
children
comparison
equal deleted inserted replaced
37:771a643d5c29 38:c2204b18f4a2
1 function out = mellin_trafo(inx,iny)
2
3 %This function computes the Mellin Transformation of a one-dimensional
4 %Signal in analytical terms given as
5 %
6 % S(p)=Integral from 0 to infty of s(t) t^(p-1)dt
7 % Which equals
8 % S(c) = Integral from -Infty to Infty s(t)*exp(j*c*log(t))d(log(t))
9 %
10 % taken from Irino and Patterson, Speech Communication 2002 Eq. (1) and (3)
11 % Tim Juergens, September 2011
12 %
13
14 %Resample the Signal onto a log(t) axis
15 minimalx=min(inx);
16 maximalx=max(inx);
17 logarithmicx= exp([log(minimalx):(log(maximalx)-log(minimalx))/length(inx):log(maximalx)]);
18 logarithmicy= interp1(inx,iny,logarithmicx,'linear','extrap');
19 %figure, semilogx(logarithmicx,logarithmicy);
20
21 %Absolute of the inverse Fourier-Transform of the resampled signal
22 out = abs(ifft(logarithmicy));
23 %figure, plot(out(1:40));
24
25
26 %%just to show that the mellin transform results in invariable patterns if
27 %%the formants are a constant ratio
28 % frequencies_short = [1:8:8000];
29 % frequencies_long = [1:10:10000];
30 % Intervals_long = 1./frequencies_long;
31 % Intervals_short = 1./frequencies_short;
32 % contoursin = sin(2*pi*0.00015.*frequencies_long).^2
33 % figure, plot(frequencies_long,contoursin), hold on, plot(frequencies_short,contoursin,'r')
34 % xlabel('Frequency (Hz)')
35 % ylabel('Rate (arb. units)')
36 % figure, semilogx(Intervals_long,contoursin), hold on, plot(Intervals_short,contoursin,'r')
37 % xlabel('Interval (s)')
38 % ylabel('Rate (arb. units)')
39 % m1 = mellin_trafo(Intervals_long,contoursin);
40 % m2 = mellin_trafo(Intervals_short,contoursin);
41 % figure, plot(m1(1:40)), hold on, plot(m2(1:40),'r');
42 % xlabel('Mellin variable c');
43 % ylabel('Magnitude');
44
45