0

matlabコードをAndroidに変換する必要があります。このmatlabコードには、以下に示すようなエネルギー計算が含まれています。

最初にオーディオファイルを行列xに読み込み、サンプル周波数をfsに読み込んでから、各ウィンドウのエネルギーを計算します。

[x, fs] = wavread('C:\1359873105438.wav')
energy=energy+sum(x(1:fs).^2)*Tss;

これをAndroid/Javaに変換する方法がわかりません。

あなたは以前にこれを経験したことがありますか?この問題を解決するのを手伝ってください。

よろしくお願いします

4

1 に答える 1

0

基本的に、次のようなことをする必要があります。

double x;//Read Wave in here
for (i=0;i<x.length;i++)
{
    energy+=Tss*(x[i]^2);
}

この記事からお借りしたwaveファイルの読み方。

public class ReadExample
{
   public static void main(String[] args)
   {
      try
      {
         // Open the wav file specified as the first argument
         WavFile wavFile = WavFile.openWavFile(new File(args[0]));

         // Get the number of audio channels in the wav file
         int numChannels = wavFile.getNumChannels();

         // Create a buffer of 100 frames
         double[] buffer = new double[100 * numChannels];

         int framesRead;

         do
         {
            // Read frames into buffer
            framesRead = wavFile.readFrames(buffer, 100);

            // Loop through frames and look for minimum and maximum value
            for (int s=0 ; s<framesRead * numChannels ; s++)
            {
               //This is where you put the your code in
            }
         }
         while (framesRead != 0);

         // Close the wavFile
         wavFile.close();
      }
      catch (Exception e)
      {
         System.err.println(e);
      }
   }
}

要するに、matlab のようにクリーンな方法はありません。ウェーブファイルを直接読み込む機能すらありません。それでも、 Web サイトが提供するWavFileクラスを使用すると、比較的簡単です。

于 2013-02-04T12:07:10.133 に答える