Androidフォンで収集したデータがあり、SQLiteファイルにSQLite形式で保存されています。MatLabまたはOctaveを使用して、このデータをいじって(分析して)みたいと思います。SQLite データはファイルとして保存されます。
このデータを MatLab にインポートするには、どのコマンドを使用するのだろうか? つまり、ベクトルまたは行列に入れます。SQL 形式にアクセスするには、特別なツールボックスやデータベース パッケージなどのパッケージが必要ですか?
Androidフォンで収集したデータがあり、SQLiteファイルにSQLite形式で保存されています。MatLabまたはOctaveを使用して、このデータをいじって(分析して)みたいと思います。SQLite データはファイルとして保存されます。
このデータを MatLab にインポートするには、どのコマンドを使用するのだろうか? つまり、ベクトルまたは行列に入れます。SQL 形式にアクセスするには、特別なツールボックスやデータベース パッケージなどのパッケージが必要ですか?
mksqliteツールがあります。
私はそれを個人的に使用しましたが、私のバージョンの matlab の正しいバージョンを取得する際にいくつかの問題がありました。しかし、その後は問題ありません。データベース ファイルを直接クエリして、matlab にインポートするデータの量を減らすこともできます。
mksqliteは良さそうに見えますが、Octave では利用できず、長期的なソリューションとしては適していない可能性があります。テーブルを CSV ファイルにエクスポートすることはオプションですが、(Octave への) インポートは、文字列の解析が関係するため、大きなデータ セットの場合は非常に遅くなる可能性があります。
別の方法として、SQLite テーブルを MAT ファイルに変換する小さな Python スクリプトを作成することになりました。このファイルは、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)