
BLE室內定位技術實現龍珠雷達裝置 from 艾鍗科技
def pack_to_data(data):
dev_id = (data[0] & 0b01111000) >> 3
dev_val = ((data[0] & 0b00000111 ) << 7) | (data[1] & 0b01111111)
return (dev_id, dev_val)
def data_to_pack(dev_id,dev_val):
data[0] = 0b10000000|( dev_id<<3)|((dev_val>>7)&0b00000111)
data[1] = (0b0001111111&dev_val)
return bytes([data[0],data[1]])
#!/usr/bin/env python3
import serial
from time import sleep
import sys
import threading
#ser = serial.Serial('/dev/ttyUSB0',9600,8,serial.PARITY_NONE,serial.STOPBITS_ONE)
class s4a_slave(object):
def __init__(self,port):
self.ser = serial.Serial(port,38400,8,'N',1)
self.pin_outputs = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] # dev id : 4 ~ 13
self.pin_inputs = [0,0,0,0,0,0,0,0,0,0,0] # analog 0 ~ 5
self.count = 0
def main_loop(self):
while(True):
sleep(0.001)
data = self.ser.read(2)
if data[0] & 0b10000000:
dev_id, dev_val = self.pack_to_data(data)
self.pin_inputs[dev_id] = dev_val
else:
data = self.ser.read()
self.count += 1
if( self.count >= 64):
self.count = 0
for i in range(4,14):
data = self.data_to_pack( i , self.pin_outputs[i] )
self.ser.write(data)
def pack_to_data(self,data):
dev_id = (data[0] & 0b01111000) >> 3
dev_val = ((data[0] & 0b00000111 ) << 7) | (data[1] & 0b01111111)
return (dev_id, dev_val)
def data_to_pack(self,dev_id,dev_val):
data = [0,0]
data[0] = 0b10000000 | ((dev_id & 0b00001111) << 3) | ( ( dev_val >> 7 ) & 0b00000111 )
data[1] = ( 0b0001111111 & dev_val )
return bytes([data[0],data[1]])
def start(self):
self.th = threading.Thread(target = self.main_loop , args=())
self.th.start()
def set_dev(self,dev_id,dev_val):
if((dev_val >= 0) and (dev_val < 1024)):
self.pin_outputs[dev_id] = int(dev_val)
if __name__=="__main__":
s4a = s4a_slave('/dev/ttyUSB0')
s4a.start()
while(True):
cmd = input().split()
s4a.set_dev(int(cmd[0]),int(cmd[1]))
5 200 (按ENTER)
可以用來比較兩個不同單位DataSet的分散程度
定義說明:
一組資料的變異係數是指將此組資料的標準差除以平均數所的商化為百分比所得之值。 設此組資料的平均數為,標準差為 s,則其變異係數為
詳細說明: 變異係數是一種相對差異量數,用以比較單位不同或單位相 同但資料差異甚大的資料分散情形。範例解說: 1.調查五位學生之身高及體重如下,試比較其分散程度。 身高:172、168、164、170、176(公分) 體重:62、57、58、64、64(公斤) 解答: 因為身高與體重的單位不同,欲比較二者的分散程度, 可利用變異係數來比較。 先計算身高與體重各自的平均數與標準差,得平均身高 為170公分、標準差為4.47公斤,平均體重為61公斤、 標準差為3.31公斤。 計算身高的變異係數為4.47/170*100% = 2.63%,而體重 的變異係數為3.31/61*100% = 5.4%。比較二者,體重的 變異係數較大,所以體重的分散程度較大。
年廣告費投入 | 月均銷售額 |
---|---|
12.5 15.3 23.2 26.4 33.5 34.4 39.4 45.2 55.4 60.9 | 21.2 23.9 32.9 34.1 42.5 43.2 49.0 52.8 59.4 63.5 |
序號 | 廣告投入(萬元) x | 月均銷售額(萬元) y | x^2 | y2 | xy |
---|---|---|---|---|---|
1 2 3 4 5 6 7 8 9 10 | 12.5 15.3 23.2 26.4 33.5 34.4 39.4 45.2 55.4 60.9 | 21.2 23.9 32.9 34.1 42.5 43.2 49.0 52.8 59.4 63.5 | 156.25 234.09 538.24 696.96 1122.25 1183.36 1552.36 2043.04 3069.16 3708.81 | 449.44 571.21 1082.41 1162.81 1806.25 1866.24 2401.00 2787.84 3528.36 4032.25 | 265.00 365.67 763.28 900.24 1423.75 1486.08 1930.60 2386.56 3290.76 3867.15 |
合計 | 346.2 | 422.5 | 14304.52 | 19687.81 | 16679.09 |
[[ 0 1 2 3 4 5 6] [ 7 8 9 10 11 12 13] [14 15 16 17 18 19 20] [21 22 23 24 25 26 27] [28 29 30 31 32 33 34]]
18
[[ 0 1 2 3 4 5 6] [ 7 8 9 10 11 12 13] [14 15 16 17 18 19 20]]
[[ 0 1 2 3] [ 7 8 9 10] [14 15 16 17]]
print(a[1:5:2,::3]) #row : 1,3 ; column: no start, so start(0):no end:step 3==> 0,3,6,....[[ 7 10 13] [21 24 27]]
[ 1 8 15 22 29]
[[ 1 3 4] [ 8 10 11] [15 17 18] [22 24 25] [29 31 32]]
[ 2 72 240 506 870]
870
找最小值print(np.min(y))
2
陣列元素值加總print(np.sum(y))
1690
陣列元素四捨五入
np.around([0.55, 0.65, 0.05], decimals=1)
array([0.6, 0.6, 0.0])

[[1 2 3 4] [1 2 3 4] [1 2 3 4]] [[5 5 5 5] [6 6 6 6] [7 7 7 7]]