【问题标题】:How to write data from the accelerometer sensor on a file and write on matlab?如何将加速度计传感器的数据写入文件并在matlab上写入?
【发布时间】:2012-12-04 18:45:28
【问题描述】:

我想从 Android 加速度计收集数据并将其写入文件。该文件存储在 SDCard 上,然后我通过 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){;}

}

我也尝试将值写为浮点数,但我仍然无法在 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 写入文件吗?传感器值是浮点数。 提前致谢。

【问题讨论】:

  • 我不熟悉matlab,但我认为您可以很容易地将数据导出为CSV格式,然后您可以在Excel(libraoffice,google docs)中操作数据,然后将其导入matlab

标签: java android matlab io text-files


【解决方案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 是数组中每一列的元素数。

【讨论】:

  • 我将有数百个值,有没有办法获得一个 4columns x N 行的文件(时间 mAccelerationX mAccelerationY mAccelerationZ)? matlab上怎么读?我想要一个包含所有值的 4xN 矩阵。
  • 我显示的代码将读取文件中的所有数据(哎呀,我犯了一个错误,我将编辑我的答案)。读入后可以调整数据大小,data = reshape(data,4,length(data)/4)
  • 其实有一种更简单的方法可以得到合适的数据大小,我会再编辑一次答案。
  • 谢谢,我需要的是 [m,n]。我现在正在尝试绘制数据。
猜你喜欢
  • 2017-06-10
  • 1970-01-01
  • 1970-01-01
  • 2011-05-07
  • 1970-01-01
  • 2017-06-10
  • 1970-01-01
  • 2011-06-25
  • 1970-01-01
相关资源
最近更新 更多