Dawn@4: function E = func_GetEnergy(y, F0, Fs, variables) Dawn@4: % E = func_GetEnergy(y, F0, Fs, variables) Dawn@4: % Input: y, Fs - from wavread Dawn@4: % F0 - vector of fundamental frequencies Dawn@4: % variables - global settings Dawn@4: % Output: Energy vector Dawn@4: % Notes: Calculates the energy, normalized for F0. This is done by using a Dawn@4: % variable length window consisting of 5 pitch periods, according to the F0 Dawn@4: % at a particular point in time. Dawn@4: % Dawn@4: % Author: Yen-Liang Shue, Speech Processing and Auditory Perception Laboratory, UCLA Dawn@4: % Copyright UCLA SPAPL 2009 Dawn@4: Dawn@4: N_periods = variables.Nperiods_EC; Dawn@4: sampleshift = (Fs / 1000 * variables.frameshift); Dawn@4: Dawn@4: E = zeros(length(F0), 1) * NaN; Dawn@4: Dawn@4: for k=1:length(F0) Dawn@4: ks = round(k * sampleshift); Dawn@4: Dawn@4: if (ks <= 0 || ks > length(y)) Dawn@4: continue; Dawn@4: end Dawn@4: Dawn@4: F0_curr = F0(k); Dawn@4: Dawn@4: if (isnan(F0_curr)) Dawn@4: continue; Dawn@4: end Dawn@4: Dawn@4: N0_curr = Fs/F0_curr; Dawn@4: Dawn@4: ystart = round(ks - N_periods/2 * N0_curr); Dawn@4: yend = round(ks + N_periods/2 * N0_curr) - 1; Dawn@4: Dawn@4: if (ystart <= 0) Dawn@4: continue; Dawn@4: end Dawn@4: Dawn@4: if (yend > length(y)) Dawn@4: continue; Dawn@4: end Dawn@4: Dawn@4: yseg = y(ystart:yend); Dawn@4: Dawn@4: E(k) = sum(yseg .^ 2); Dawn@4: Dawn@4: end Dawn@4: