我有一些由 Android 手机收集的数据,它以 SQLite 格式存储在 SQLite 文件中。我想使用 MatLab 或 Octave 来处理这些数据(分析它)。SQLite 数据存储为文件。
我想知道您将使用哪些命令将此数据导入 MatLab?也就是说,将其放入向量或矩阵中。我是否需要任何特殊的工具箱或包(如数据库包)来访问 SQL 格式?
我有一些由 Android 手机收集的数据,它以 SQLite 格式存储在 SQLite 文件中。我想使用 MatLab 或 Octave 来处理这些数据(分析它)。SQLite 数据存储为文件。
我想知道您将使用哪些命令将此数据导入 MatLab?也就是说,将其放入向量或矩阵中。我是否需要任何特殊的工具箱或包(如数据库包)来访问 SQL 格式?
有mksqlite工具。
我个人使用过它,在为我的 matlab 版本获取正确版本时遇到了一些问题。但在那之后,就没有问题了。您甚至可以直接查询数据库文件以减少导入 matlab 的数据量。
尽管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)