Main Page   Packages   Class Hierarchy   Compound List   File List   Compound Members  

AvgSpec.java

00001 /*
00002  *  Copyright 2006-2007 Columbia University.
00003  *
00004  *  This file is part of MEAPsoft.
00005  *
00006  *  MEAPsoft is free software; you can redistribute it and/or modify
00007  *  it under the terms of the GNU General Public License version 2 as
00008  *  published by the Free Software Foundation.
00009  *
00010  *  MEAPsoft is distributed in the hope that it will be useful, but
00011  *  WITHOUT ANY WARRANTY; without even the implied warranty of
00012  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013  *  General Public License for more details.
00014  *
00015  *  You should have received a copy of the GNU General Public License
00016  *  along with MEAPsoft; if not, write to the Free Software
00017  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
00018  *  02110-1301 USA
00019  *
00020  *  See the file "COPYING" for the text of the license.
00021  */
00022 
00023 package com.meapsoft.featextractors;
00024 
00025 import com.meapsoft.STFT;
00026 
00035 public class AvgSpec extends FeatureExtractor 
00036 {
00037         
00038     public double[] features(STFT stft, long startFrame, int length) 
00039     {
00040 
00041         double[] avgSpec= new double[stft.getRows()];
00042         double[] curFrame;
00043         double sum = 0;
00044         
00045         for(int band=0; band<avgSpec.length; band++)
00046             avgSpec[band] = 0;
00047         
00048         for(int frame=0; frame<length; frame++) 
00049         {
00050             curFrame = stft.getFrame(startFrame+frame);
00051             for(int band=0; band<avgSpec.length; band++) 
00052             {
00053                 //double tmp = curFrame[band] / length;
00054                 double tmp = Math.pow(10,curFrame[band]/10) / length;
00055                 avgSpec[band] += tmp;
00056                 sum += tmp;
00057             }
00058         }
00059         
00060         double dBconst = 10/Math.log(10); 
00061         for(int band=0; band<avgSpec.length; band++)
00062             //avgSpec[band] = avgSpec[band] / sum;
00063             avgSpec[band] = dBconst*Math.log(avgSpec[band] / sum);
00064         
00065         return avgSpec;
00066     }
00067 
00068         public String description()
00069         {
00070                 return "Computes the mean spectrum or each chunk.";
00071         }
00072 }

Generated on Tue Feb 6 19:02:24 2007 for MEAPsoft by doxygen1.2.18