スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[HSP3]フーリエ級数展開プログラミング

なんとなくフーリエ級数展開。式をそのまま移植するだけ。虚数不要だから簡単。
説明は無し。wikipediaとは異なる式を使っていますが・・・。

データ圧縮として実装してみたいです。HSPだと流石に限界か。

定数。
INTEGDIV 積分の微小分
NUM 展開する三角関数の数 10辺りの数にすると級数展開っぽい
TIM 1周期の長さ
SAMPLE 復元させる波形のデータ数
VIEWZOOM 表示倍率(縦)



#const double INTEGDIV 0.01

#const double NUM 100
#const double TIM M_PI*2
#const double SAMPLE 600

;#define ctype func(%1) (sin(%1))
;#define ctype func(%1) ((%1)/TIM)
#define ctype func(%1) (0.0+((%1)>TIM/2)-0.5)
;#define ctype func(%1) (((%1)/TIM)*((%1)/TIM))
;#define ctype func(%1) (expf(-(%1)))
;#define ctype func(%1) (2.0*absf((%1)/TIM-0.5)-0.5)
;#define ctype func(%1) ((1.0-(%1)/TIM)*((%1)>TIM/2))

#const double VIEWZOOM1 300
#const double VIEWZOOM2 100

ddim xa,NUM+1
ddim xb,NUM+1

ddim reFunc,SAMPLE,2

;----------展開
t=0.0
while (t<TIM)
xa.0 += func(t)*INTEGDIV
t+=INTEGDIV
wend
xa.0 = (xa.0)/TIM
repeat NUM,1
t=0.0
while (t<TIM)
xa.cnt += func(t)*2.0*cos(t*2.0*M_PI*cnt/TIM)*INTEGDIV
xb.cnt += func(t)*2.0*sin(t*2.0*M_PI*cnt/TIM)*INTEGDIV
t+=INTEGDIV
wend

xa.cnt = (xa.cnt)/TIM
xb.cnt = (xb.cnt)/TIM
loop

;-------------------------------復元
t=0.0 : c=0
while (c<SAMPLE)
reFunc.c.0=t
reFunc.c.1=xa.0
repeat NUM,1
reFunc.c.1+=xa.cnt*cos(t*2.0*M_PI/TIM*cnt)+xb.cnt*sin(t*2.0*M_PI/TIM*cnt)
loop
t+=INTEGDIV : c++
wend


;-------------------------------表示

line 0,200,640,200

repeat NUM+1

color 255,0,0 : line 3*cnt ,200,3*cnt ,200-VIEWZOOM1*xa.cnt
color 0,255,0 : line 3*cnt+1,200,3*cnt+1,200-VIEWZOOM1*xb.cnt

;logmes strf("f(%8.3f)=%12.6f integ[%12.6f] deriv[%12.6f]",time,f,integ,deriv)

;time+=TIMESTEP
loop
t=reFunc.0.0
fc=reFunc.0.1
repeat SAMPLE-1,1
t2=reFunc.cnt.0
fc2=reFunc.cnt.1
color 192,192,255 : line t*50,200-VIEWZOOM2*func(t),t2*50,200-VIEWZOOM2*func(t2)
color 0,0,255 : line t*50,200-VIEWZOOM2*fc,t2*50,200-VIEWZOOM2*fc2
logmes strf("%8.3f: %8.3f / %8.3f",t2,fc2,func(t2))
t=t2
fc=fc2
loop
stop

スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

tag : HSP3 アルゴリズムとデータ構造

コメントの投稿

非公開コメント

ブログ移転のお知らせ
ブログをshonen.hateblo.jpに移転します. 新規の記事はこちらに投稿します.
プロフィール

舞葉(ぶよう)

Author:舞葉(ぶよう)
github.io
はてなブログ(競プロ)

古い記事のソースコードは色分けしていないので、高機能テキストエディタに貼り付けたほうが見やすいかも。

検索フォーム
このブログについて
自分がつまづいた話題、なんとなく書きたいと思ったこと、ググったけど殆ど資料なかったぞオイ な話等をアップする予定。通りすがりでも、参考になっていただければと。プログラムの例外入力、メモリリークは責任負いません。投稿された記事は修正・削除する場合があります。
カテゴリ
タグ

HSP3アルゴリズムとデータ構造c++RubyJavaUnity画像解析C機械学習C#LinuxcodeIQKinectMinecraftTonyuSystemraspberrypiPythonHTML5音声制御Simulinkruby俺ルール通信制御Javascriptシミュレーション

counter-shinobi
固定記事
最新記事
最新コメント
月別アーカイブ
ブロとも申請フォーム

この人とブロともになる

アクセスランキング
[ジャンルランキング]
コンピュータ
635位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
94位
アクセスランキングを見る>>
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。