Mercurial > hg > map
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 |