1

Androidの加速度計からデータを収集してファイルに書き込みたい。ファイルはSDカードに保存されてから、adbpullコマンドで手動でコンピューターにコピーします。次に、Matlabの値を分析します。

最善の方法は何ですか?パラメータを文字列として記述しようとしましたが、Matlabでの読み方がわかりません。

        WriteOnFile(FdataAcc, String.valueOf(event.timestamp) 
                                + " " + mAcceleration[0] 
                                + " " + mAcceleration[1]
                                + " " + mAcceleration[2] + "\n");  

    public void WriteOnFile(File filename, String data){
    try{
        DataOutputStream dos = new DataOutputStream( new FileOutputStream(filename,true));
        //new appended stream
        dos.writeChars(data);
        dos.close();
        }
        catch(Exception e){;}

}

また、値をfloatとして書き込もうとしましたが、それでもMatlabで読み取ることができません。

    public void WriteOnFile(File filename, long data){
    try{
        DataOutputStream dos = new DataOutputStream( new FileOutputStream(filename,true));
        dos.writeFloat((float)data);
        dos.writeChars(" ");
        dos.writeFloat((float) mAcceleration[0]);
        dos.writeChars(" ");
        dos.writeFloat((float) mAcceleration[1]);
        dos.writeChars(" ");
        dos.writeFloat((float) mAcceleration[2]);
        dos.writeChars("\n");
        dos.close();
        }
        catch(Exception e){;}

}

最善の方法は何ですか?Dataoutputstreamを使用してファイルに書き込む必要がありますか?センサー値は浮動小数点数です。前もって感謝します。

4

1 に答える 1

1

示した 2 番目の例を使用する必要がありますが、フロートの間に文字を書き込まないでください。

matlab で fopen を実行するときは、必ずマシン形式の引数を指定してください。適切なフォーマットが得られるまで試してみる必要があるかもしれませんが、うまくいきます。help fopenオプションを表示するには、実行してください。

すべてのデータを読み込むために必要なことは、

fid = fopen(filename,'r',MACHINEFORMAT);
data = fread(fid,inf,'float32');  %float32 is for single precision float

または、配列に読み込みたい場合:

data = fread(fid,[M,inf],'float32');

ここで、M は配列の各列の要素数です。

于 2012-12-04T18:56:33.097 に答える