« 議論のコスパ | トップページ | バーチャルハムフェス2021に参加します »

Python のソースコード貼り付け

 試し書きしてみた

 ココログでソースコードを表示するやり方について調べてみたらやっぱりあった

import numpy as np
sample_rate = 8000
signal_freq = 1000
x = np.arange(0, 1, 1/sample_rate ) # x座標を-10 から 10 まで 0.1 きざみで取得
y = np.sin(2 * np.pi * signal_freq * x) # 正弦関数の式を記述
print( 'sample_rate: ', sample_rate )
for target_freq in [ 641, 701, 1000, 1191 ]:
N = 200
k = int( 0.5 + N * target_freq / sample_rate )
w = ( 2 * np.pi / N ) * k
cosine = np.cos( w )
sine = np.sin( w )
coeff = 2 * cosine
  print('----')
print( 'target_freq: ', target_freq )
print( 'N: ', N )
print( 'k: ', k )
print( 'coeff: ', coeff )
  q2 = 0
q1 = 0
for i in range( N ):
q0 = coeff * q1 - q2 + y[i]
q2 = q1
q1 = q0
real = ( q1 - q2 * cosine )
imag = ( q2 * sine )
mag = np.sqrt( real * real + imag * imag )
  print( 'real: ', real )
print( 'imag: ', imag )
print( 'mag: ', mag )

ソースコードを上記のように張り付けてみたがどう見えるだろうか。ちょっと実験してみた。

 この Python のスクリプトは Goertzel アルゴリズムといって、ターゲットにした周波数だけの FFT を簡略化して求める計算方法なのです。大量にメモリにデータを格納しなくて済むので、小さなマイコン向きの実装になります。Python では固定少数点化できないのですが、今度は C 言語で書いて Visual Studio でデバッグする予定です。

 C 言語で書いたら Arduino で実装して、生の DTMF トーンを ADC から入力して demodulate できるかどうか実験してみたいと思っています。これがうまくいったら FSK モデムの実装が Arduino みたいなマイコンでもできることを証明できます。そこまでブログでは記事にしていきます。

« 議論のコスパ | トップページ | バーチャルハムフェス2021に参加します »

電子回路工作」カテゴリの記事

コメント

この記事へのコメントは終了しました。

2022年3月
    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    
無料ブログはココログ