【问题标题】:How to Import SQLite data (gathered by an Android device) into either Octave or MatLab?如何将 SQLite 数据(由 Android 设备收集)导入 Octave 或 MatLab?
【发布时间】:2012-08-08 12:04:30
【问题描述】:

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

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

【问题讨论】:

  • 数据有多复杂?它只是表格中的数字(您可以导出为 CSV)还是涉及更复杂的内容?
  • 它主要是文件中的一个表格,表格中填充了数字(但一列的时间为 hh:mm:ss.ms 格式)。我现在将尝试 CSV 的想法(为这个想法干杯)。我想我会在 MatLab 中使用文件 i/o 命令?但最终,我会有一堆不同的 SQL 文件,将每个文件转换为 CSV 可能会很麻烦。

标签: sqlite matlab signal-processing octave


【解决方案1】:

mksqlite 工具。

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

【讨论】:

  • 我看过了,看起来还不错。我正在使用一台 linux 机器(给我的权限有限),我想知道是否可以在上面使用 mksqlite?
  • 寻找“我如何重建 mksqlite?”在文档页面上。你只需要一个编译器和matlab。我两者都有,用过buildit,收到一些警告并安装了它。
【解决方案2】:

虽然 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)

【讨论】:

    猜你喜欢
    • 2014-07-07
    • 2018-08-26
    • 1970-01-01
    • 1970-01-01
    • 2015-08-01
    • 1970-01-01
    • 2012-04-17
    • 2022-01-11
    • 2016-05-23
    相关资源
    最近更新 更多