1b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgclear;
2b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgpack;
3b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org%
4b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org% Enter the path to YOUR executable and remember to define the perprocessor
5b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org% variable PRINT_MIPS te get the instructions printed to the screen.
6b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org%
7b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgcommand = '!iLBCtest.exe 30 speechAndBGnoise.pcm out1.bit out1.pcm tlm10_30ms.dat';
8b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgcout=' > st.txt';   %saves to matlab variable 'st'
9b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgeval(strcat(command,cout));
10b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgif(length(cout)>3)
11b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    load st.txt
12b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgelse
13b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    disp('No cout file to load')
14b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgend
15b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
16b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org% initialize vector to zero
17b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgindex = find(st(1:end,1)==-1);
18b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgindexnonzero = find(st(1:end,1)>0);
19b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgframes = length(index)-indexnonzero(1)+1;
20b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgstart = indexnonzero(1) - 1;
21b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgfunctionOrder=max(st(:,2));
22b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgnew=zeros(frames,functionOrder);
23b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
24b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgfor i = 1:frames,
25b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    for j = index(start-1+i)+1:(index(start+i)-1),
26b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        new(i,st(j,2)) = new(i,st(j,2)) + st(j,1);
27b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    end
28b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgend
29b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
30b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgresult=zeros(functionOrder,3);
31b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgfor i=1:functionOrder
32b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    nonzeroelements = find(new(1:end,i)>0);
33b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    result(i,1)=i;
34b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    
35b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    % Compute each function's mean complexity
36b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    % result(i,2)=(sum(new(nonzeroelements,i))/(length(nonzeroelements)*0.03))/1000000;
37b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    
38b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    % Compute each function's maximum complexity in encoding
39b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    % and decoding respectively and then add it together:
40b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    % result(i,3)=(max(new(1:end,i))/0.03)/1000000;
41b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    result(i,3)=(max(new(1:size(new,1)/2,i))/0.03)/1000000 + (max(new(size(new,1)/2+1:end,i))/0.03)/1000000;
42b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgend
43b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
44b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgresult
45b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
46b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org% Compute maximum complexity for a single frame (enc/dec separately and together)
47b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgmaxEncComplexityInAFrame = (max(sum(new(1:size(new,1)/2,:),2))/0.03)/1000000
48b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgmaxDecComplexityInAFrame = (max(sum(new(size(new,1)/2+1:end,:),2))/0.03)/1000000
49b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgtotalComplexity = maxEncComplexityInAFrame + maxDecComplexityInAFrame