質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.92%

サンプリング周波数を調整する方法

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 271

N.R

score 1

こんにちは。
bitalinoをpythonから動かしてリアルタイム処理することを目標にいろいろやっているのですが、
出力されたcsvファイルを見ていると、サンプリング周波数が1000になっているのにも関わらずデータ数が1000個しか出力されてきません。
改善策を教えていただきたいです。
また、このプログラムでとれた心拍からピークを取って出力するというところまでをリアルタイム処理でしていきたいと考えています。
乱文になりましたが、ご教授お願いいたします。

import matplotlib.pyplot as plt

import time

from bitalino import BITalino

# The macAddress variable on Windows can be "XX:XX:XX:XX:XX:XX" or "COMX"
# while on Mac OS can be "/dev/tty.BITalino-XX-XX-DevB" for devices ending with the last 4 digits of the MAC address or "/dev/tty.BITalino-DevB" for the remaining
macAddress = "98:D3:A1:FD:5B:E8"

#This example will collect data for 5 sec.
running_time = 10

batteryThreshold = 30
acqChannels = [0, 1, 2, 3, 4, 5]
samplingRate = 1000
nSamples = 10
digitalOutput = [1,1]

# Connect to BITalino
device = BITalino(macAddress)

# Set battery threshold
device.battery(batteryThreshold)


# Read BITalino version
print(device.version())

# Start Acquisition
device.start(samplingRate, acqChannels)

start = time.time()
end = time.time()
f = open('hogehoge2.csv','w',)

while (end - start) < running_time:
    # Read samples
    data = device.read(nSamples)
    s = data[:, 7]

    for i in range(0,9):
        print(s[i])

    f.write(str(s[i]))
    f.write('\n')
    #f.close()
    end = time.time()
    plt.plot(data[:, 7])
f.close()

# Turn BITalino led on
device.trigger(digitalOutput)

# Stop acquisition
device.stop()

# Close connection
device.close()
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • N.R

    2020/07/22 20:35

    返信ありがとうございます。

    Bitalino向けのOpenSignalsというソフトウェアではサンプリング周波数を10〜1000まで調整することができているので、センサー自体は大丈夫だと考えています。
    よろしくお願いします。

    キャンセル

  • ozwk

    2020/07/22 23:09 編集

    nSamples を100とか1000にするとか
    plt.plot(data[:, 7])をとりあえず消してみるとどうなります?

    あとcsvの出力は1000個ピッタリですか?

    samplingRateを10にしたらどうなります?

    キャンセル

  • N.R

    2020/07/27 15:58

    お返事遅れて申し訳ありません。
    plt.plot(data[:, 7])を消しました。

    nSampleを100・samplingRateを1000にするとcsvの出力は100個でした。
    nSampleを1・samplingRateを1000にすると
    print(s[i])
    IndexError: index 1 is out of bounds for axis 0 with size 1
    というエラーがでてきます。
    csvファイルは何回か計測してみましたが、997~998個出力されます。

    samplingRateを10にするとcsvファイルは10個出力されてきました。
    よろしくお願いします。

    キャンセル

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.92%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る