如何从文件上的加速计传感器写入数据并在matlab上书写?

时间:2012-12-04 18:45:28

标签: java android matlab io text-files

我想从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写入文件吗?传感器值是浮点数。 提前致谢。

1 个答案:

答案 0 :(得分:1)

您应该使用您显示的第二个示例,但不要在浮点数之间写入字符。

当您在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是数组中每列中的元素数。