Setup:


In [1]:
using Distributions;
using PyPlot;
include("Diss.jl");
include("vowels2.jl");


INFO: Loading help data...

Category means for reference (have been mostly not using duration since it causes some problems with scaling):

vowel [duration; F0; F1; F2; F3; F4]

iy_mu = [306.83; 14.32; 21.43; 47.68; 50.81; 54.84]; # /e/ ei_mu = [320.94; 14.00; 23.91; 46.28; 49.23; 54.70]; # /ae/ ae_mu = [334.19; 13.77; 26.94; 45.05; 48.82; 54.71]; # /U/ (horseshoe) oo_mu = [249.27; 14.44; 23.54; 35.30; 48.05; 53.77]; # /u/ uw_mu = [303.83; 14.67; 22.04; 33.65; 47.53; 53.96]; # /a/ ah_mu = [324.33; 13.68; 31.18; 38.55; 48.06; 54.62]; # // (open o) aw_mu = [350.52; 13.76; 29.31; 34.83; 48.01; 53.31]; # /E/ (epsilon) eh_mu = [251.60; 13.72; 27.93; 43.14; 48.72; 54.69]; # /I/ (small-cap i) ih_mu = [241.40; 14.22; 22.69; 45.28; 49.27; 54.80]; # /o/ oa_mu = [326.69; 13.91; 24.33; 32.82; 48.04; 53.24]; # // (wedge or schwa) uh_mu = [236.52; 13.95; 28.55; 37.43; 48.44; 54.04];

In [2]:
# Again, scaling down the variability of the data here.
var_scaling = 0.7
iy_sample = cat(1,rand(MvNormal(iy_mu,iy_sigma*var_scaling),500),zeros(1,500));
ei_sample = cat(1,rand(MvNormal(ei_mu,ei_sigma*var_scaling),500),ones(1,500));
ae_sample = cat(1,rand(MvNormal(ae_mu,ae_sigma*var_scaling),500),ones(1,500)*2);
oo_sample = cat(1,rand(MvNormal(oo_mu,oo_sigma*var_scaling),500),ones(1,500)*3);
uw_sample = cat(1,rand(MvNormal(uw_mu,uw_sigma*var_scaling),500),ones(1,500)*4);
ah_sample = cat(1,rand(MvNormal(ah_mu,ah_sigma*var_scaling),500),ones(1,500)*5);
aw_sample = cat(1,rand(MvNormal(aw_mu,aw_sigma*var_scaling),500),ones(1,500)*6);
eh_sample = cat(1,rand(MvNormal(eh_mu,eh_sigma*var_scaling),500),ones(1,500)*7);
ih_sample = cat(1,rand(MvNormal(ih_mu,ih_sigma*var_scaling),500),ones(1,500)*8);
oa_sample = cat(1,rand(MvNormal(oa_mu,oa_sigma*var_scaling),500),ones(1,500)*9);
uh_sample = cat(1,rand(MvNormal(uh_mu,uh_sigma*var_scaling),500),ones(1,500)*10);

Trying with gradually increasing vowel inventories.

First test is a five-vowel system with /i/, /u/, /$\epsilon$/, /o/, and /a/:


In [3]:
sample_5 = cat(2,iy_sample,oa_sample,uw_sample,ah_sample,eh_sample);
ord = randperm(size(sample_5,2));
col1 = permute!(sample_5[1,:],ord);
col2 = permute!(sample_5[2,:],ord);
col3 = permute!(sample_5[3,:],ord);
col4 = permute!(sample_5[4,:],ord);
col5 = permute!(sample_5[5,:],ord);
col6 = permute!(sample_5[6,:],ord);
col7 = permute!(sample_5[7,:],ord);
vowels_5_rand = cat(1,col1,col2,col3,col4,col5,col6,col7);

In [4]:
scatter(vowels_5_rand[3,:],vowels_5_rand[4,:],c=vowels_5_rand[7,:])


Out[4]:
PyObject <matplotlib.collections.PathCollection object at 0x7f1038e7be90>

As seen in the graph above, this is a pretty easy problem for the most part. uw and oa are the most similar here. They are the two clusters which show some degree of overlap, seen in the lower left.

Learning in 2 dimensions (F1,F2) with deterministic competition:


In [5]:
vowelMix5 = ItterMix(2,10,1,{10},{1},{},eye(2),1);
for i=1:2000
    update(vowelMix5,vowels_5_rand[3:4,i],1);
end

j = 1
for i=1:length(vowelMix5.components)
    if vowelMix5.phi[i]>0.01
        print(j,' ', vowelMix5.components[i].mu)
        print('\n')
        j+=1
    end
end


1 [27.992326229915435,43.11055415412185]
2 [30.150492779238494,37.667485225183576]
3 [23.2485481724852,33.44889337956199]
4 [21.57847986740499,31.48711893960808]
5 [21.867845133146417,37.01571538415988]
6 [21.214835678022506,32.96360652614009]
7 [22.78700587792308,30.95132915325908]
8 [21.58483568027755,47.73129403260172]
9 [20.885761704961467,29.886063403020458]

In [6]:
Mix5_sample = sample(vowelMix5,5000);
scatter(Mix5_sample[1,:],Mix5_sample[2,:],c=Mix5_sample[3,:])


Out[6]:
PyObject <matplotlib.collections.PathCollection object at 0x7f0ffdab20d0>

In [7]:
Mix5_sample = sample(vowelMix5,5000,0.05);
scatter(Mix5_sample[1,:],Mix5_sample[2,:],c=Mix5_sample[3,:])


Out[7]:
PyObject <matplotlib.collections.PathCollection object at 0x7f0ffd9ecbd0>

In [8]:
contourplot(vowelMix5,[1;2],"none")


Out[8]:
PyObject <matplotlib.contour.QuadContourSet instance at 0x7f0ffd354128>

In [9]:
Mix5_sample = sample(vowelMix5,5000,"none");
scatter(Mix5_sample[1,:],Mix5_sample[2,:],c=Mix5_sample[3,:])


Out[9]:
PyObject <matplotlib.collections.PathCollection object at 0x7f0ffd262250>

In this run of the model, too many categories were learned, although the number of categories is somewhat variable.

1~iy, 2~uw, 3~oa, 4~eh, 5~ah, 6~oa

Learning in 2 dimensions (F1,F2) with probabilistic competition (tends to over-learn):


In [10]:
vowelMix5 = ItterMix(2,10,1,{10},{1},{},eye(2),1);
for i=1:2000
    update(vowelMix5,vowels_5_rand[3:4,i],2);
end

j = 1
for i=1:length(vowelMix5.components)
    if vowelMix5.phi[i]>0.05
        print(j,' ', vowelMix5.components[i].mu)
        print('\n')
        j+=1
    end
end


1 [28.170366589958498,43.0367181968173]
2 [23.090066561766815,32.855220258425724]
3 [27.63788160296211,35.83627627412266]
4 [21.533229088815236,47.73416660776065]

In [11]:
Mix5_sample = sample(vowelMix5,5000,"none");
scatter(Mix5_sample[1,:],Mix5_sample[2,:],c=Mix5_sample[3,:])


Out[11]:
PyObject <matplotlib.collections.PathCollection object at 0x7f0ffd1e7e10>

In [12]:
contourplot(vowelMix5,[1;2],"none")


Out[12]:
PyObject <matplotlib.contour.QuadContourSet instance at 0x7f0ffd0eb9e0>

1~ih, 2~oa, 3~eh, 4~ah, 5~uw, 6~eh

Learning in 3 dimensions (dc):


In [13]:
scatter3D(vowels_5_rand[4,:],vowels_5_rand[2,:],vowels_5_rand[3,:],c=vowels_5_rand[7,:])


Out[13]:
PyObject <mpl_toolkits.mplot3d.art3d.Patch3DCollection object at 0x7f0ffd020ed0>

In [14]:
vowelMix5 = ItterMix(3,10,1,{10},{1},{},eye(3),1);
for i=1:2000
    update(vowelMix5,vowels_5_rand[2:4,i],1);
end

j = 1
for i=1:length(vowelMix5.components)
    if vowelMix5.phi[i]>0.05
        print(j,' ', vowelMix5.components[i].mu)
        print('\n')
        j+=1
    end
end


1 [13.717876355430871,29.51458129020179,40.857867583260955]
2 [13.817509655371842,24.55206787226653,33.02775120663977]
3 [14.692849949246563,22.069858614565096,33.42332056376565]
4 [14.386393154249655,21.542984671835995,47.71183743795867]

In [15]:
contourplot(vowelMix5,[2;3],"none")


Out[15]:
PyObject <matplotlib.contour.QuadContourSet instance at 0x7f0ffd0ebc68>

pc:


In [16]:
vowelMix5 = ItterMix(3,10,1,{10},{1},{},eye(3),1);
for i=1:2000
    update(vowelMix5,vowels_5_rand[2:4,i],2);
end

j = 1
for i=1:length(vowelMix5.components)
    if vowelMix5.phi[i]>0.05
        print(j,' ', vowelMix5.components[i].mu)
        print('\n')
        j+=1
    end
end


1 [13.738738220247365,27.933085608058313,43.04991112484425]
2 [14.107163406320119,23.600855637813723,31.966065903623534]
3 [14.644009803521525,21.999308066481085,34.80749552476782]
4 [13.838042761480335,27.676308364082725,35.74747728194044]
5 [14.428956478803498,21.541187352876683,47.73235004529018]

In [17]:
contourplot(vowelMix5,[2;3],"none")


Out[17]:
PyObject <matplotlib.contour.QuadContourSet instance at 0x7f0ffce85638>

4 dimensions (dc):


In [18]:
vowelMix5 = ItterMix(4,10,1,{10},{1},{},eye(4),1);
for i=1:2000
    update(vowelMix5,vowels_5_rand[2:5,i],1);
end

j = 1
for i=1:length(vowelMix5.components)
    if vowelMix5.phi[i]>0.05
        print(j,' ', vowelMix5.components[i].mu)
        print('\n')
        j+=1
    end
end


1 [13.72378761637797,29.574612864426385,40.85845034541165,48.43923024330533]
2 [14.67572831987959,22.063006838054864,33.40725546230826,47.550552654404]
3 [13.993844419047466,24.796519860514366,32.96994969602459,47.497261383850876]
4 [14.42061170093398,21.590577679147454,47.70915868909259,50.76520248708159]

In [19]:
contourplot(vowelMix5,[2;3],"none")


Out[19]:
PyObject <matplotlib.contour.QuadContourSet instance at 0x7f0ffcd9b050>

pc:


In [20]:
vowelMix5 = ItterMix(4,10,1,{10},{1},{},eye(4),1);
for i=1:2000
    update(vowelMix5,vowels_5_rand[2:5,i],2);
end

j = 1
for i=1:length(vowelMix5.components)
    if vowelMix5.phi[i]>0.05
        print(j,' ', vowelMix5.components[i].mu)
        print('\n')
        j+=1
    end
end


1 [13.918479929227132,26.56197754702314,44.075475824282314,49.053846638921115]
2 [14.115995780341288,23.18875537373812,32.44258765159547,48.14751414628815]
3 [14.666865314558942,22.036786807326255,33.50898379651596,47.5658959072367]
4 [13.406852515660384,31.123718613161422,38.347393326776924,47.93903090160834]
5 [13.88372711055739,31.275430279204134,38.6294282491028,48.52102112730204]
6 [14.122951316414447,21.17977247031163,47.686459118505226,50.8008134350995]

In [21]:
contourplot(vowelMix5,[2;3],"none")


Out[21]:
PyObject <matplotlib.contour.QuadContourSet instance at 0x7f0ffcd438c0>

5 dimensions (dc):


In [22]:
vowelMix5 = ItterMix(5,10,1,{10},{1},{},eye(5),1);
for i=1:2000
    update(vowelMix5,vowels_5_rand[2:6,i],1);
end

j = 1
for i=1:length(vowelMix5.components)
    if vowelMix5.phi[i]>0.05
        print(j,' ', vowelMix5.components[i].mu)
        print('\n')
        j+=1
    end
end


1 [13.76226454685453,27.578548370948408,43.30388978134067,48.789628788258405,54.50142913474994]
2 [14.653607696405402,21.986005840055697,32.78997281009929,47.55508156353034,53.979560414208926]
3 [14.396662379576382,21.523963355741035,47.72363842067119,50.87808447751378,54.99550783363833]
4 [13.682232716643108,30.953165103418804,38.301501272597655,48.197632650816615,54.45667077052972]
5 [13.75674854563007,24.386041819026545,32.72494526247656,48.10893127709362,53.242119617681155]

In [23]:
contourplot(vowelMix5,[2;3],"none")


Out[23]:
PyObject <matplotlib.contour.QuadContourSet instance at 0x7f0ffcc19710>

In [24]:
Mix5_sample = sample(vowelMix5,5000,"none");
scatter(Mix5_sample[2,:],Mix5_sample[3,:],c=Mix5_sample[6,:])


Out[24]:
PyObject <matplotlib.collections.PathCollection object at 0x7f0ffcc0d790>

pc:


In [25]:
vowelMix5 = ItterMix(5,10,1,{10},{1},{},eye(5),1);
for i=1:2000
    update(vowelMix5,vowels_5_rand[2:6,i],2);
end

j = 1
for i=1:length(vowelMix5.components)
    if vowelMix5.phi[i]>0.05
        print(j,' ', vowelMix5.components[i].mu)
        print('\n')
        j+=1
    end
end


1 [13.666071811071632,27.98215047108601,43.108142837214025,48.686889991889835,54.62377831743459]
2 [14.029653792888,24.08033308219615,32.78883635613095,48.069708195606616,53.23716364313132]
3 [14.292119073845093,21.476325732214065,47.715142483884186,50.786225672221015,54.778976109126006]
4 [14.504156072748135,21.852954907613373,33.68977102437328,47.58791647881011,54.07463745631341]
5 [13.837596844047113,30.871444262147932,38.33924760450823,48.343406908214845,54.27306893278078]

In [26]:
Mix5_sample = sample(vowelMix5,5000,"none");
scatter(Mix5_sample[2,:],Mix5_sample[3,:],c=Mix5_sample[6,:])


Out[26]:
PyObject <matplotlib.collections.PathCollection object at 0x7f0ffcb67790>

In [28]:
contourplot(vowelMix5,[2;3],"none")


Out[28]:
PyObject <matplotlib.contour.QuadContourSet instance at 0x7f0ffca24d40>

6 vowels:

Adding schwa


In [27]:
sample_6 = cat(2,iy_sample,oa_sample,uw_sample,ah_sample,eh_sample,uh_sample);
ord = randperm(size(sample_6,2));
col1 = permute!(sample_6[1,:],ord);
col2 = permute!(sample_6[2,:],ord);
col3 = permute!(sample_6[3,:],ord);
col4 = permute!(sample_6[4,:],ord);
col5 = permute!(sample_6[5,:],ord);
col6 = permute!(sample_6[6,:],ord);
col7 = permute!(sample_6[7,:],ord);
vowels_6_rand = cat(1,col1,col2,col3,col4,col5,col6,col7);

In [29]:
scatter(vowels_6_rand[3,:],vowels_6_rand[4,:],c=vowels_6_rand[7,:])


Out[29]:
PyObject <matplotlib.collections.PathCollection object at 0x7f0ffc9b7250>

2-d dc:


In [31]:
vowelMix6 = ItterMix(2,10,1,{10},{1},{},eye(2),1);
for i=1:2000
    update(vowelMix6,vowels_6_rand[3:4,i],1);
end

j = 1
for i=1:length(vowelMix6.components)
    if vowelMix6.phi[i]>0.05
        print(j,' ', vowelMix6.components[i].mu)
        print('\n')
        j+=1
    end
end


1 [28.868802286880406,39.805574837113355]
2 [22.70594522081944,31.099474816824483]
3 [23.26098159461819,34.32008192965284]
4 [21.484766727340993,47.66687369024614]
5 [23.912678810650636,32.27808785625398]

In [32]:
Mix6_sample = sample(vowelMix6,5000,"none");
scatter(Mix6_sample[1,:],Mix6_sample[2,:],c=Mix6_sample[3,:])


Out[32]:
PyObject <matplotlib.collections.PathCollection object at 0x7f0ffc946090>

2-d pc:


In [34]:
vowelMix6 = ItterMix(2,10,1,{10},{1},{},eye(2),1);
for i=1:2000
    update(vowelMix6,vowels_6_rand[3:4,i],2);
end

j = 1
for i=1:length(vowelMix6.components)
    if vowelMix6.phi[i]>0.05
        print(j,' ', vowelMix6.components[i].mu)
        print('\n')
        j+=1
    end
end


1 [29.068633608359633,37.58883746492701]
2 [23.970341376066884,32.456654116902264]
3 [22.27771444138411,33.17959266956442]
4 [22.858792015735673,33.129558478257664]
5 [21.752842503105217,47.594844642740604]
6 [27.563108823277656,43.48451744978043]
7 [31.651431902166426,38.4176498765513]
8 [28.301708025846835,42.96630986272211]

In [35]:
Mix6_sample = sample(vowelMix6,5000,"none");
scatter(Mix6_sample[1,:],Mix6_sample[2,:],c=Mix6_sample[3,:])


Out[35]:
PyObject <matplotlib.collections.PathCollection object at 0x7f0ffc8b6d50>

3-d dc:


In [61]:
vowelMix6 = ItterMix(3,10,1,{10},{1},{},eye(3));
for i=1:2000
    update(vowelMix6,vowels_6_rand[2:4,i],1);
end

j = 1
for i=1:length(vowelMix6.components)
    if vowelMix6.phi[i]>0.05
        print(j,' ', vowelMix6.components[i].mu)
        print('\n')
        j+=1
    end
end


1 [13.734824446949517,27.89809702957401,43.18023313632637]
2 [14.597972136927472,21.96402662572817,33.84638083205108]
3 [13.857499586024723,29.826749643881246,37.986279260004245]
4 [14.338346483906825,21.474358163117266,47.681562395386045]
5 [14.180955561438402,23.603134209484956,32.01869954940173]
6 [13.760636196488162,24.743540135570438,33.34353824458004]

In [ ]:
Mix6_sample = sample(vowelMix6,5000,"none");
scatter(Mix6_sample[1,:],Mix6_sample[2,:],c=Mix6_sample[4,:])

3-d pc:


In [65]:
vowelMix6 = ItterMix(3,10,1,{10},{1},{},eye(3));
for i=1:2000
    update(vowelMix6,vowels_6_rand[2:4,i],2);
end

j = 1
for i=1:length(vowelMix6.components)
    if vowelMix6.phi[i]>0.05
        print(j,' ', vowelMix6.components[i].mu)
        print('\n')
        j+=1
    end
end


1 [13.730623966098408,27.906451579098096,43.175612558521394]
2 [13.821548393005983,29.426090500594924,37.811738752784294]
3 [14.32413486521533,21.456867978954723,47.67999249409869]
4 [14.653955580225565,22.03155080127612,33.73843963298873]
5 [13.821641160220839,31.67607190630474,38.73806763349657]
6 [13.761179283424077,23.704122717376254,32.28696000086815]

In [ ]:
Mix6_sample = sample(vowelMix6,5000,"none");
scatter(Mix6_sample[1,:],Mix6_sample[2,:],c=Mix6_sample[4,:])

4-d dc:


In [68]:
vowelMix6 = ItterMix(4,10,1,{10},{1},{},eye(4));
for i=1:2000
    update(vowelMix6,vowels_6_rand[2:5,i],1);
end

j = 1
for i=1:length(vowelMix6.components)
    if vowelMix6.phi[i]>0.05
        print(j,' ', vowelMix6.components[i].mu)
        print('\n')
        j+=1
    end
end


1 [14.026121681356297,24.804262716508447,45.33799568826483,49.749821234827564]
2 [14.622532575006003,21.988203798690222,33.83766309411196,47.506357907845235]
3 [13.632634980658123,26.60546538324608,35.210169613542156,48.212606407132725]
4 [14.1960404432884,24.076588349337946,32.3331542226578,47.938663539708635]
5 [14.41855227881307,28.726499452025735,37.473701272548695,48.23876207498121]
6 [13.67899352051946,31.327145805203276,38.53338990197775,48.01153956110183]

In [ ]:
Mix6_sample = sample(vowelMix6,5000,"none");
scatter(Mix6_sample[1,:],Mix6_sample[2,:],c=Mix6_sample[5,:])

4-d pc:


In [74]:
vowelMix6 = ItterMix(4,10,1,{10},{1},{},eye(4));
for i=1:2000
    update(vowelMix6,vowels_6_rand[2:5,i],2);
end

j = 1
for i=1:length(vowelMix6.components)
    if vowelMix6.phi[i]>0.05
        print(j,' ', vowelMix6.components[i].mu)
        print('\n')
        j+=1
    end
end


1 [13.802507922945704,28.183748159984077,42.843530733876364,48.74298230933499]
2 [14.336346838951567,21.478625613355398,47.66689661317345,50.814412228285796]
3 [14.012664537873032,24.02037723033914,32.51404170270523,47.982995351385576]
4 [13.578389880229144,31.147647121873923,38.619325410380775,48.00222620000046]
5 [14.719878198807715,22.095577071984188,33.68634564845031,47.5195737406225]
6 [13.98978210204132,28.58409902867742,37.41698993203115,48.3813578563002]

In [ ]:
Mix6_sample = sample(vowelMix6,5000,"none");
scatter(Mix6_sample[1,:],Mix6_sample[2,:],c=Mix6_sample[5,:])

5-d dc:


In [76]:
vowelMix6 = ItterMix(5,10,1,{10},{1},{},eye(5));
for i=1:2000
    update(vowelMix6,vowels_6_rand[2:6,i],1);
end

j = 1
for i=1:length(vowelMix6.components)
    if vowelMix6.phi[i]>0.05
        print(j,' ', vowelMix6.components[i].mu)
        print('\n')
        j+=1
    end
end


1 [13.73955856597726,27.911548154643757,43.168936038433095,48.748224046595865,54.78088116256595]
2 [14.633325713946563,21.99134604003438,33.80316399901258,47.503531014397424,53.9029257126359]
3 [13.679276232943668,30.987399714879096,38.47282788493187,48.145172823270734,54.526128385006004]
4 [14.3424620757168,21.468882538994563,47.685524035600324,50.83272860943543,54.92616969153557]
5 [14.049131874972641,24.053573465576548,32.52227331314741,47.99304059025815,53.30294590332516]
6 [14.085060778319912,28.536391987515955,37.46940144601055,48.38805698995422,54.07705805506763]

5-d pc:


In [78]:
vowelMix6 = ItterMix(5,10,1,{10},{1},{},eye(5));
for i=1:2000
    update(vowelMix6,vowels_6_rand[2:6,i],2);
end

j = 1
for i=1:length(vowelMix6.components)
    if vowelMix6.phi[i]>0.05
        print(j,' ', vowelMix6.components[i].mu)
        print('\n')
        j+=1
    end
end


1 [13.82762727987906,28.88689112423034,42.23825425487604,48.64964755855103,54.853005361639724]
2 [14.662221440189018,22.03626416606974,33.623197138829994,47.5658800765722,53.964847760327174]
3 [13.910964083803604,24.227333545601798,32.68032908872719,48.01327657257792,53.29917294139409]
4 [14.354507651389808,21.50246516814121,47.66580927928134,50.817264344429375,54.87196741610842]
5 [13.814217986919273,29.006405927275374,37.734999710586074,48.35882527090188,54.120053043020796]
6 [14.091740039780294,29.560301987193707,37.722626161657736,48.379648508454224,54.24894894724743]

7 vowels:

adding /e/


In [122]:
sample_7 = cat(2,iy_sample,oa_sample,uw_sample,ah_sample,eh_sample,uh_sample,ei_sample);
ord = randperm(size(sample_7,2));
col1 = permute!(sample_7[1,:],ord);
col2 = permute!(sample_7[2,:],ord);
col3 = permute!(sample_7[3,:],ord);
col4 = permute!(sample_7[4,:],ord);
col5 = permute!(sample_7[5,:],ord);
col6 = permute!(sample_7[6,:],ord);
col7 = permute!(sample_7[7,:],ord);
vowels_7_rand = cat(1,col1,col2,col3,col4,col5,col6,col7);

In [127]:
scatter(vowels_7_rand[3,:],vowels_7_rand[4,:],c=vowels_7_rand[7,:])


Out[127]:
PyObject <matplotlib.collections.PathCollection object at 0x7fc0e70a1950>

2-d dc:


In [100]:
vowelMix7 = ItterMix(2,10,1,{10},{1},{},eye(2));
for i=1:2000
    update(vowelMix7,vowels_7_rand[3:4,i],1);
end

j = 1
for i=1:length(vowelMix7.components)
    if vowelMix7.phi[i]>0.05
        print(j,' ', vowelMix7.components[i].mu)
        print('\n')
        j+=1
    end
end


1 [29.85620548353437,37.971584418045346]
2 [28.413509688612248,43.36867627196769]
3 [21.438518739662687,47.694505876606556]
4 [25.47710847167249,44.54778532597431]
5 [24.01752208626627,32.49560692110126]
6 [21.99012572587495,33.88807658383666]
7 [24.35920887698259,46.5458109762651]

2-d pc:


In [106]:
vowelMix7 = ItterMix(2,10,1,{10},{1},{},eye(2));
for i=1:2000
    update(vowelMix7,vowels_7_rand[3:4,i],2);
end

j = 1
for i=1:length(vowelMix7.components)
    if vowelMix7.phi[i]>0.05
        print(j,' ', vowelMix7.components[i].mu)
        print('\n')
        j+=1
    end
end


1 [29.818203881357054,37.946463094889374]
2 [28.073717165614994,43.077919576300076]
3 [24.28685161636263,32.59071765925405]
4 [22.137567646749357,47.294127523754376]
5 [24.28770733809716,46.04193570146378]

3-d dc:


In [116]:
vowelMix7 = ItterMix(3,10,1,{10},{1},{},eye(3));
for i=1:2000
    update(vowelMix7,vowels_7_rand[2:4,i],1);
end

j = 1
for i=1:length(vowelMix7.components)
    if vowelMix7.phi[i]>0.05
        print(j,' ', vowelMix7.components[i].mu)
        print('\n')
        j+=1
    end
end


1 [13.850107144198157,29.862339342657634,37.970883876327655]
2 [13.744004303435574,27.922202377465936,43.11523458324688]
3 [14.127461418461289,22.70075583723451,46.9779907354051]
4 [14.728058850622878,22.07647299245474,33.66700262411347]
5 [13.859040633208387,24.24031865367622,32.67809304487197]

3-d pc:


In [139]:
vowelMix7 = ItterMix(3,10,1,{10},{1},{},eye(3));
for i=1:2000
    update(vowelMix7,vowels_7_rand[2:4,i],2);
end

j = 1
for i=1:length(vowelMix7.components)
    if vowelMix7.phi[i]>0.05
        print(j,' ', vowelMix7.components[i].mu)
        print('\n')
        j+=1
    end
end


1 [13.665848151835174,27.825152948222495,43.14850742257213]
2 [13.973335606473034,28.452716035292106,37.26176934932487]
3 [13.800770216047757,30.889947667741822,38.55814020967628]
4 [13.9557630538287,24.319940026367945,32.83018616184401]
5 [14.189699838268584,23.21066132210718,46.8137093246416]
6 [14.567490514803245,21.929434442912818,33.632692618096776]

4-d dc:


In [135]:
vowelMix7 = ItterMix(4,10,1,{10},{1},{},eye(4));
for i=1:2000
    update(vowelMix7,vowels_7_rand[2:5,i],1);
end

j = 1
for i=1:length(vowelMix7.components)
    if vowelMix7.phi[i]>0.05
        print(j,' ', vowelMix7.components[i].mu)
        print('\n')
        j+=1
    end
end


1 [13.690232413684884,27.898640975744915,43.13016267250624,48.68287683540809]
2 [13.999185819966225,26.767602063713994,35.3885572898447,48.23072968492257]
3 [14.59885997928907,21.96428782677398,33.73670893149681,47.49651568374276]
4 [13.983653983333047,23.93757992654305,46.32457222188359,49.27690167797626]
5 [14.33294171712041,21.46627329294998,47.67523785584474,50.784776092290656]
6 [13.592430351649513,30.815240006769308,38.36090725093148,48.09100819978561]

4-d pc:


In [143]:
vowelMix7 = ItterMix(4,10,1,{10},{1},{},eye(4));
for i=1:2000
    update(vowelMix7,vowels_7_rand[2:5,i],2);
end

j = 1
for i=1:length(vowelMix7.components)
    if vowelMix7.phi[i]>0.05
        print(j,' ', vowelMix7.components[i].mu)
        print('\n')
        j+=1
    end
end


1 [13.688171648681234,27.88423881688887,43.18608027173569,48.70009535017489]
2 [13.73506671924283,28.935479244681073,37.3759629210644,48.19898646475627]
3 [14.649811409727175,22.031381208220296,33.558331224100264,47.50582262184502]
4 [13.977490092301696,24.467056135246587,32.83885033357367,48.01420468371623]
5 [13.934582481554818,29.4801736962786,37.954253227407264,48.281614021947966]
6 [14.292933456980377,21.433491319644208,47.66060162328185,50.75767545537514]
7 [13.783050966529387,31.64768641405513,38.58977474672446,48.079445941839026]
8 [13.996044591412897,23.939354373158473,46.32184856646233,49.282639022913386]

In [ ]: