我有一些由Android手机收集的数据,它以SQLite格式存储在SQLite文件中。我想用MatLab或Octave来处理这些数据(分析它)。 SQLite数据存储为一个文件。如何将SQLite数据(由Android设备收集)导入Octave或MatLab?
我想知道你会用什么命令将这些数据导入到MatLab中?说,把它放入一个向量或矩阵。我是否需要任何特殊工具箱或软件包(如数据库软件包)来访问SQL格式?
我有一些由Android手机收集的数据,它以SQLite格式存储在SQLite文件中。我想用MatLab或Octave来处理这些数据(分析它)。 SQLite数据存储为一个文件。如何将SQLite数据(由Android设备收集)导入Octave或MatLab?
我想知道你会用什么命令将这些数据导入到MatLab中?说,把它放入一个向量或矩阵。我是否需要任何特殊工具箱或软件包(如数据库软件包)来访问SQL格式?
还有mksqlite工具。
我个人使用它,有一些问题得到我的matlab版本的正确版本。但之后,没有问题。您甚至可以直接查询数据库文件以减少导入到matlab中的数据量。
我已经看过它,它看起来不错。我正在使用Linux机器(给予我的权限有限),我想知道是否可以使用mksqlite? – 2012-08-08 14:25:03
寻找'我如何重建mksqlite?'在文档页面上。你只需要一个编译器和matlab。我有两个,使用'buildit',得到了一些警告,它被安装。 – 2012-08-08 14:36:24
尽管mksqlite看起来不错,但它不适用于Octave,可能不适合作为长期解决方案。将表导出为CSV文件是一种选择,但由于涉及到字符串解析,对于较大的数据集,导入(进入Octave)可能会很慢。
作为替代方案,我最终编写了一个小型Python脚本,将我的SQLite表转换为MAT文件,该文件可以快速加载到Matlab或Octave中。 MAT文件是平台中立的二进制文件,该方法适用于包含数字和字符串的列。
import sqlite3
import scipy.io
conn = sqlite3.connect('my_data.db')
csr = conn.cursor()
res = csr.execute('SELECT * FROM MY_TABLE')
db_parms = list(map(lambda x: x[0], res.description))
# Remove those variables in db_parms you do not want to export
X = {}
for prm in db_parms:
csr.execute('SELECT "%s" FROM MY_TABLE' % (prm))
v = csr.fetchall()
# v is now a list of 1-tuples
X[prm] = list(*zip(*v))
scipy.io.savemat('my_data.mat', X)
数据有多复杂?它只是表中的数字(您可以导出为CSV)还是涉及更复杂的内容? – 2012-08-08 12:21:17
它大多只是文件中的单个表格,表格中填充了数字(但一列的时间为hh:mm:ss.ms格式)。 我会尝试CSV的想法(欢呼的想法)现在。我想我会在MatLab中使用文件I/O命令?但最终,我将拥有不同的SQL文件堆栈,并且将每个文件转换为CSV可能会非常麻烦。 – 2012-08-08 13:42:07