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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

791閲覧

3000*24のデータを出力させたい

naganosouitirou

総合スコア3

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/12/15 05:10

現在rasberrypiとmyowareとmcp3204を使って筋電位の測定をする研究をおこなっています。
下のようなプログラムを組んで文字とエンターを押すたびにデータが保存され、3000×24の表を作成しようと考えています。いまのプログラムでは1000×24のデータしか出てきません。weakness,grasping,opening,syoukutu,haikutu,syakutuの順で横方向に連結して3000×24の表を作りたいです。アドバイスや改善点がありましたらお願いしたいです。
前回まではサンプリング周波数2000で測定していたのでnp.arangeを使って表の作成ができていたのですが、今回はサンプリングの間隔が割り切れずnp.arangeのままだと丸められて1000×24の表しか作成できません。このような理由から今回はnp.linspaceを使用しています。
ですがやはり、1000×24のデータしか測定できません。

python

1import wiringpi as pi 2import time 3import numpy as np 4import openpyxl as excel 5import spidev 6import threading 7import pandas as pd 8 9SPI_CE = 0 10SPI_SPEED = 5000000 11READ_CH = 0 12VREF = 5 13spi = spidev.SpiDev() 14spi.open(0,0) 15spi.max_speed_hz =SPI_SPEED 16during_time = 0.5 17sampling_rate = 6000 18sampling_num = int(during_time*sampling_rate) 19 20sampling_interval = 1 / sampling_rate 21x = np.linspace(0.0, during_time, during_time*sampling_interval) 22y = np.zeros(sampling_num) 23 24def main(): 25 print('測定開始') 26 all_data = [] 27 for i in ['weakness','grasping','opening','syoukutu','haikutu','syakkutu']: 28 print("{}:測定".format(i)) 29 toriga = input() 30 if toriga: 31 MEASURE = measure() 32 data = MEASURE.keisoku() 33 print(data) 34 all_data.extend(data) 35 print("{}:測定終了".format(i)) 36 37 pd.DataFrame(np.array(all_data)).T.to_csv('data29.csv', index=False, header=False) 38 39class measure(object): 40 def __init__(self): 41 self.data=[] 42 self.data1=[] 43 self.data2=[] 44 self.data3=[] 45 46 47 48 def read_ch0(self): 49 adc=spi.xfer2([6,0,0]) 50 data=((adc[1]&15)<<8)+adc[2] 51 self.data.append(data) 52 #print('thread1',end="") 53 return 54 55 def read_ch1(self): 56 adc=spi.xfer2([6,0x40,0]) 57 data=((adc[1]&15)<<8)+adc[2] 58 self.data1.append(data) 59 #print('thread2',end="") 60 return 61 62 def read_ch2(self): 63 adc=spi.xfer2([6,0x80,0]) 64 data=((adc[1]&15)<<8)+adc[2] 65 self.data2.append(data) 66 #print('thread3',end="") 67 return 68 69 def read_ch3(self): 70 adc=spi.xfer2([6,0xc0,0]) 71 data=((adc[1]&15)<<8)+adc[2] 72 self.data3.append(data) 73 #print('thread4',end="") 74 return 75 76 def keisoku(self): 77 count=0 78 time_start = time.perf_counter() 79 time_next = time_start 80 81 for sampling_interval in x: 82 thread1 = threading.Thread(target=self.read_ch0) 83 thread2 = threading.Thread(target=self.read_ch1) 84 thread3 = threading.Thread(target=self.read_ch2) 85 thread4 = threading.Thread(target=self.read_ch3) 86 thread1.start() 87 thread2.start() 88 thread3.start() 89 thread4.start() 90 while (time.perf_counter() < sampling_interval): # 次の時間まで待つ。 91 pass 92 count+=1 93 94 return self.data, self.data1, self.data2, self.data3 95 96 97if __name__=='__main__': 98 main()

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

naganosouitirou

2021/06/02 07:37

ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問