工作と競馬2

電子工作、プログラミング、木工といった工作の記録記事、競馬に関する考察記事を掲載するブログ

ヒルベルト変換 メモ

振幅包絡線を求めたかったので、メモ。

from scipy import signal
from scipy import fftpack
import numpy as np
import matplotlib.pyplot as plt

N = 1024
f = 5
f2 = 2
t = np.arange(0, N, 1) / N

# 元信号
x = np.sin(2 * np.pi * f * t) * (1 + 0.5 * np.sin(2 * np.pi * f2 * t))

# ヒルベルト変換
h = fftpack.hilbert(x)

# 解析信号
xa = signal.hilbert(x)

# 包絡線
env = np.abs(xa)
fig = plt.figure()

plt.plot(t, x, label="x")
plt.plot(t, h, label="h")
plt.plot(t, env, label="envelope(abs(xa))")

plt.legend()
plt.grid("both", "both")

f:id:dekuo-03:20220108181011p:plain

2021年リーディングサイアーランキング回顧

概要

JRAの2021年リーディングサイアーに関する一考察である。過去10年にわたるリーディングサイアーランキングの変遷とともに今年のランキングの意味合いおよび来年以降のトレンドについて考察した。


背景と目的

2021年もJRA全レースが終了し、リーディングサイアーランキングが確定した。本記事では、過去10年にわたるランキング変遷とともに今年のランキングの意味合いと今後のトレンドについて考察する。


詳細

1. 2021年リーディングサイアーランキング

以下は、2021年リーディングサイアーランキング上位10傑。

順位 馬名 勝馬 EI 賞金[億円] 代表馬
1 ディープインパクト 0.353 2.41 68.1 コントレイル
2 ロードカナロア 0.305 1.34 36.1 ダノンスマッシュ
3 ハーツクライ 0.326 1.37 27.8 ヒシイグアス
4 キズナ 0.359 1.68 27.0 ディープボンド
5 キングカメハメハ 0.347 1.77 24.7 アンドヴァラナウト
6 エピファネイア 0.272 1.44 24.3 エフフォーリア
7 ルーラーシップ 0.284 1.15 24.2 エヒト
8 オルフェーブル 0.293 1.47 22.8 オーソリティ
9 ダイワメジャー 0.267 1.16 17.8 レステンシア
10 ヘニーヒューズ 0.326 1.21 16.6 タガノビューティー


  • 順位の入れ替わりはあるものの、10頭の顔ぶれは昨年と変わらなかった。
  • 1位はディープインパクト(以下、ディープ)で、EIが他の9頭に比べて抜きん出ている。ただし、昨年よりはすべての指標が下がったが、心配するレベルではない。
  • 2位と3位は入れ替わりがないが、ロードカナロアハーツクライの間には賞金額でかなりの差があるので、当然といえる。アーモンドアイが引退しても、平均的に強い仔が多く稼げるということだろう。
  • 4位キズナは、昨年8位から上昇してきた。昨年EIがやや低いと書いたが、ロードカナロアハーツクライを上回り、勝ち馬率がディープを超えている。やはり非常に優秀。
  • 5位キングカメハメハは、現役馬数も減ってきているにもかかわらず順位を守った。EIも勝ち馬率もキズナとそん色なく優秀。産駒は早熟でなおかつ活躍期間も長いのだろう。
  • 6位エピファネイアは、昨年9位で期待できると書いたがまさしく上がってきた。10頭の中では勝馬率が低いので、エフフォーリアのような大物を出して稼ぐタイプかもしれない。
  • ルーラーシップダイワメジャーは昨年とほぼ変わらない安定した成績だ。ただ、ダイワメジャーは徐々に後退気味。オルフェーヴルは、勝馬率が昨年より改善してG1勝ち産駒がいない中でこの順位は立派なのだがステイゴールドの仔らしくない。中級クラスが確実に活躍しているのだろう。ヘニーヒューズは、昨年の印象と同様ダート専門で安定感がある。


2. 過去10年間の変遷

図2は、過去10年のリーディングサイアーランキングの変遷である。

 今年、ディープが10年連続首位となった。サンデーサイレンスの通算2500勝までの最速記録を塗り替え、有力な後継であるキズナも出てきたりと、もはや語ることがないレベルに到達している。キンカメは粘っているが産駒数が減るので今後は徐々に後退していきそう。昨年、今後産駒数の減っていくディープの次のリーディングサイアーロードカナロアオルフェーヴルが狙う展開と書いたが、オルフェーヴルは少し雲行きが怪しい。その代わり、やはり昨年有望株と書いたキズナエピファネイアが上昇してきた。この2頭とロードカナロアの時代が近いのではないだろうか。ハーツクライはまだ数年はトップ10を十分維持できそう。他馬の勢いに押され気味のルーラーシップや高齢のダイワメジャーは、トップ10維持が難しくなると思われる。

3. 今後の展望

前節までを踏まえてここでは今後の展望を行ってみたい。 来年も、1位はディープが守るだろう。産駒数は減る傾向だが2位とだいぶ差がある。2~4位グループはロードカナロアキズナハーツクライが争う展開と思われる。キズナは、上昇カーブがロードカナロアに匹敵しており、2位も十分射程圏といえる。5~7位グループは、キンカメに対してエピファネイアが追い越す可能性と、ドゥラメンテが食い込んでくる可能性が考えられる。10位前後のグループは、ヘニーヒューズオルフェーヴルルーラーシップ等トップ10常連が争うところに、モーリスが食い込むだろう。  新興勢力については、以前の考察で示している通り、初年度100位以内であることが、将来のトップ10の目安となる。特に、50位以内は、トップ10どころかリーディングを狙う器ともいえる。 2020年のドゥラメンテ(44位)、モーリス(47位)はまさしくその通りの上昇ぶり。2021年でいうと、初年度100位以内として、ドレフォン(43位)、シルバーステート(59位)、イスラボニータ(79位)、キタサンブラック(85位)がいる。ドレフォンは、初年度勝馬率0.311でありハーツクライ級に優秀なので期待が持てそう。他3頭は勝馬率がそれほど高くないため、2022年は様子を見る必要がありそう。また、サンデーサイレンス系の蔓延する日本で馴染みのない異系だけに配合の自由度が高い点も魅力的だろう。最後に2022年のリーディング予想を以下にまとめておく。

順位 馬名 コメント
1位 ディープインパクト 1位を堅持
2-4位グループ キズナロードカナロアハーツクライ キズナが2頭を追い抜くか
5-7位グループ キンカメ、エピファネイアドゥラメンテ ドゥラメンテが食い込む
10位前後グループ モーリス、オルフェーヴルルーラーシップ モーリス上昇、他は安定した実力で上位の常連を形成
新興勢力 ドレフォン 将来トップ10圏内までくるか。

まとめと今後の課題

2021年のリーディングサイアーランキングについて、過去10年の変遷および今後の展望を交えて考察を行うことができた。2022年も動向を見守っていく。

BLEモジュール BL652ブレイクアウトボードで遊ぶ(4) --- A/D変換 ---

概要

BL652ブレイクアウトボードで、アナログ出力のセンサの値をA/D変換して読み取ってみた。



背景と目的

前回のI2C通信に引き続き、BL652ブレイクアウトボードでの実用を想定して、アナログ接続のセンサからA/D変換で値を読み取ってみる。



詳細

0. 実施環境と参考情報


1. 回路

以下の回路を使用し、AIN4~AIN7のA/D変換値を読み取る。

  • AIN4: 5V系の電源電圧検出用回路を接続
  • AIN5: 土壌水分センサを接続
  • AIN6: 光センサを接続
  • AIN7: 予備系統

なお、GPIO14,16,18,20は計測時以外の無駄な電流をなくすための制御ポートとして用意している。(今回はどうでもいいのでONしっぱなしで使う)


2. コーディング

参考資料2を参考に、コーディングした。動作は、3秒に1回、A/D変換入力4chを取得。AD変換の設定は、

  • 減衰比: 1/6
  • 分解能: 12bit
  • アクイジションタイム: 40usec

とした。BL652の仕様上、A/D変換の基準電圧が0.6Vで減衰比1/Nのとき、ディジタルフルスケールが0.6 * N [V]に対応する。

GPIO14,16,18,20は、今回は待機電流はどうでもいいのでHIGHにしたまま。

// 変数 -----------------------------------------------------------

DIM pinVBAT,pinMOIST,pinPHOTO,pinEX1 // ADC入力
pinVBAT = 28
pinMOIST = 29
pinPHOTO = 30
pinEX1 = 31

DIM pinVBATEN, pinMOISTEN, pinPHOTOEN, pinEX1EN // センサ電源
pinVBATEN = 20
pinMOISTEN = 18
pinPHOTOEN = 16
pinEX1EN = 14

DIM r // 作業用

DIM adcVBAT, adcMOIST, adcPHOTO, adcEX1 // ADC計測値
DIM VCE as float : VCE = 0.013 // VBAT計測回路オフセット, 13mV

// 関数 ----------------------------------------------------------------

// ADCピン設定
FUNCTION config_ADCPins()

    // GPIOSETFUNCEX (nSigNum, nFunction, subFunc$)
    // subFunc$ will be a string that has the following form:- "\Gain_hex\Resolution_hex\Acquisition_hex"
    // ADC基準電圧は0.6V、1/Nスケーリングの場合、0.6*N[V]がディジタルフルスケールになる
    DIM subFunc$ : subFunc$ = "\16\0C\14" // gain=1/6scaling, resolution=12bit, aquisition_time=40usec
    r = GPIOSETFUNCEX(pinVBAT, 3, subFunc$)
    r = GPIOSETFUNCEX(pinMOIST, 3, subFunc$)
    r = GPIOSETFUNCEX(pinPHOTO, 3, subFunc$)
    r = GPIOSETFUNCEX(pinEX1, 3, subFunc$)

ENDFUNC 1

// センサ回路電源設定
FUNCTION config_SensorPowerSupply()
    // GPIOSETFUNC (nSigNum, nFunction, nSubFunc)
    // nSubFunc
    r = GPIOSETFUNC(pinVBATEN, 2, 0) // VBAT
    r = GPIOSETFUNC(pinMOISTEN, 2, 0) // MOIST
    r = GPIOSETFUNC(pinPHOTOEN, 2, 0) // PHOTO
    r = GPIOSETFUNC(pinEX1EN, 2, 0) // EX1

ENDFUNC 1

// センサ回路ON
FUNCTION enable_Sensors()

    GpioWrite(pinVBATEN, 1) // VBAT
    GpioWrite(pinMOISTEN, 1) // MOIST
    GpioWrite(pinPHOTOEN, 1) // PHOTO
    GpioWrite(pinEX1EN, 1) // EX1

ENDFUNC 1

// AD変換
FUNCTION get_ADC()

    DIM VBAT as float

    // ADC
    adcVBAT = GpioRead(pinVBAT)
    adcMOIST = GpioRead(pinMOIST)
    adcPHOTO = GpioRead(pinPHOTO)
    adcEX1 = GpioRead(pinEX1)

    VBAT = (adcVBAT * 0.6 * 6 / 4096.0 - VCE) * 2.0 + VCE

    // 表示
    PRINT "VBAT = "; VBAT; "V\n"
    PRINT "MOIST = "; adcMOIST; "\n"
    PRINT "PHOTO = "; adcPHOTO; "\n"
    PRINT "EX1 = "; adcEX1; "\n"
    PRINT "\n"

ENDFUNC 1

// メイン -------------------------------------------------------

// ADCピン設定
r = config_ADCPins()

// センサ回路電源設定
r = config_SensorPowerSupply()

// センサ回路ON
r = enable_Sensors()

ONEVENT EVTMR1 CALL get_ADC

TimerStart(1, 3000, 1)

WAITEVENT


3. 動作確認

以下の通り、チャンネルごとに多少ばらつきはあるが、ほぼ正しい値となっていることを確認した。

  • AIN4
    • 実測1: 4.55V、A/D変換値: 4.55V
    • 実測2: 3.38V、A/D変換値: 3.39V --- 電池が消耗した場合を想定して低めの電圧の時の精度を確認。
  • AIN5
    • 実測: 2.956V, ADC: 3370=2.956V
  • AIN6
    • 実測: 2.247V, ADC: 2576=2.261V

※AIN7は、予備なので精度確認なし。

※上記の数値は、下の画像とは別のタイミングで取得。


まとめと今後の課題

本記事までで、I2C、BLEアドバタイズ、A/D変換のコーディング方法が確認できた。次回は、センサ計測値をBLEで飛ばせるようにしたい。