我想从Android加速度计收集数据并将其写入文件。该文件存储在SDCard上,然后我通过adbpull comand手动复制到计算机。然后我想分析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){;}
}
最好的方法是什么?我应该使用数据输出流写入文件吗?传感器值为浮点数。提前谢谢。
您应该使用您展示的第二个示例,但不要在浮点数之间写入字符。
当你在 matlab 上打开时,请确保输入机器格式参数。 您可能需要尝试它,直到获得正确的格式,但它会起作用。 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 是数组中每列中的元素数。