function maxValues = Max_SeriesOfScalar(auData, scalingRatio, elementNum, weight_flag, weight, write_flag)
%%% File: max_SeriesOfScalar.m
%%
%% -------------- ---------------
%%
%% The function of this subroutine is Series of maxima
%% of groups of samples. Size of the vector should equal
%% elementNum, or 0 if Raw is present.
%%
%% Definition:
%%
%% N = P*Q (?)
%% P -> scaleRatio, Q -> rescaleFactor
%% maxValue = max_{i=1+(k-1)*N}^{kN} x_i
%% x -> audata
%% If Weight present, ignore samples with zero weight.
%% If all have zero weight, set to zero by convention.
%% (N3704)
%%
%%
%% Copyright (c), IME, All Rights Reserved
%%
%% Author: Dong Yan Huang
%% Version: 1.0 Time: 28 October 2000 (N3489)
%% Last Modified: 27 Mar 2001 (N3704)
global fid;
%%if nargin < 3, error('constr requires three input arguments'); end
%%if nargin < 5, weight_flag = 0; weight= []; end
%% Initialization
totalSampleNum = length(auData);
len = length(scalingRatio);
maxValues = [];
if weight_flag == 0
if len == 1 & scalingRatio(len) == 1& write_flag == 1
x = strcat('');
fprintf(fid, '%s\n ',x);
else
lastlenData = 0;
k = 1;
len = length(scalingRatio);
while k <= len
lenData = lastlenData + scalingRatio(k)*elementNum(k);
if totalSampleNum < lenData
N = floor((totalSampleNum - lastlenData)/scalingRatio(k));
if N >= 0
for i = 1:N
sn_segment = auData(lastlenData+1+(i-1)*scalingRatio(k):lastlenData+i*scalingRatio(k));
maxValues = [maxValues max(sn_segment)];
end
N1 = lastlenData + N*scalingRatio(k);
sn_segment = auData(N1+1:totalSampleNum);
maxValues = [maxValues, max(sn_segment)];
end
else
for i = 1:elementNum(k)
sn_segment = auData(lastlenData+1+(i-1)*scalingRatio(k):lastlenData+i*scalingRatio(k));
maxValues = [maxValues max(sn_segment)]
end
lastlenData = lenData;
end
if write_flag == 1
x = strcat('');
fprintf(fid, '%s\n ',x);
end
k=k+1;
end
x = strcat('', num2str(maxValues),'');
fprintf(fid,'%s\n',x);
end
else
if len == 1 & scalingRatio(len) == 1 & write_flag == 1
x = strcat('')
fprintf(fid, '%s\n ',x);
else
if sum(weight) == 0
maxValues = [maxValues 0]
else
lastlenData = 0;
k = 1;
len = length(scalingRatio);
while k <= len
lenData = lastlenData + scalingRatio(k)*elementNum(k);
if totalSampleNum < lenData
N = floor((totalSampleNum - lastlenData)/scalingRatio(k));
if N >= 0
for i = 1:N
%sn_segment = auData(lastlenData+1+(i-1)*scalingRatio[k]:lastlenData+i*scalingRatio[k]);
j=1;
for l = lastlenData+1+(i-1)*scalingRatio(k):lastlenData+i*scalingRatio(k)
if weight(l) ~= 0
sn_segment(j) = auData(l);
j =j+1;
end
end
maxValues = [maxValues max(sn_segment(1:j-1))];
end
N1 = lastlenData + N*scalingRatio(k);
j=1;
for l = N1+1:totalSampleNum
if weight(l) ~= 0
sn_segment(j) = auData(l);
j=j+1;
end
end
maxValues = [maxValues, max(sn_segment(1:j-1))];
end
else
for i = 1:elementNum(k)
j=1;
for l = lastlenData+1+(i-1)*scalingRatio(k):lastlenData+i*scalingRatio(k)
if weight(l) ~= 0
sn_segment(j) = auData(l);
j=j+1;
end
end
maxValues = [maxValues max(sn_segment(1:j-1))];
end
lastlenData = lenData;
end
if write_flag == 1
x = strcat('');
fprintf(fid, '%s\n ',x);
end
k=k+1;
end
end;
x = strcat('', num2str(maxValues),'');
fprintf(fid,'%s\n',x);
end
end