3

我有一些由 Android 手机收集的数据,它以 SQLite 格式存储在 SQLite 文件中。我想使用 MatLab 或 Octave 来处理这些数据(分析它)。SQLite 数据存储为文件。

我想知道您将使用哪些命令将此数据导入 MatLab?也就是说,将其放入向量或矩阵中。我是否需要任何特殊的工具箱或包(如数据库包)来访问 SQL 格式?

4

2 回答 2

4

mksqlite工具。

我个人使用过它,在为我的 matlab 版本获取正确版本时遇到了一些问题。但在那之后,就没有问题了。您甚至可以直接查询数据库文件以减少导入 matlab 的数据量。

于 2012-08-08T12:35:35.527 回答
3

尽管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)
于 2013-03-26T01:12:42.520 回答