0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

概要

プロデルが、CLRらしいので、調べて見た。
練習問題、やってみた。

練習問題

SDR(Software defined Radio)をシュミレートせよ。
FM復調せよ。

写真

image.png

サンプルコード


窓というウィンドウを、作る
	その内容は、「FM復調」
	その大きさは、{900, 700}
窓を、表示する
かめというカメを、作る
	その位置は、{20, 60}
かめを窓に、表示する
sinは、sin波
sinを、ピンクで描画する
fmは、fm波
fmを、青で描画する
dmは、fmで、demod波
dmを、白で描画する
待機する

[am]で、demod波を作る手順:倍浮動小数の配列
	結果は、{}
	tは、1
	I1は、{} 
	Q1は、{}
	tが361未満の間、繰り返す
		【値1:倍浮動小数】は、amの(t) * サイン(t / 8000 * 2 * π * 3000)
		I1に値1を加える
		【値2:倍浮動小数】は、amの(t)* コサイン(t / 8000 * 2 * π * 3000)
		Q1に値2を加える
		tは、t + 1
	そして
	I2は、I1を8000と400でlpf
	Q2は、Q1を8000と400でlpf
	tは、1
	tが361未満の間、繰り返す
		【値:倍浮動小数】は、 atan(I2の(t) * Q2の(t) )
		結果に値を加える
		tは、t + 1
	そして	
	結果を返す
終り

sin波を作る手順:倍浮動小数の配列
	結果は、{}
	角度は1
	角度が360未満の間、繰り返す
		【値:倍浮動小数】は、サイン(角度 / 8000 × 2 × π × 220)
		結果に値を加える
		角度は、角度 + 1
	そして	
	結果を返す
終り

fm波を作る手順:倍浮動小数の配列
	結果は、{}
	角度は1
	角度が360未満の間、繰り返す
		【値:倍浮動小数】は、サイン(角度 / 8000 × 2 × π × 3000  + 6 × コサイン(角度 / 8000 × 2 × π × 22)) 
		結果に値を加える
		角度は、角度 + 1
	そして	
	結果を返す
終り

 [input]を, [samplerate]と, [freq]で、lpfする手順
 	outputは、 {}
	q は、  1.0
	omega は、  2.0 * π * freq / samplerate
	alpha は、  サイン(omega) / (2.0 * q)
	a0 は、  1.0 + alpha
	a1 は、  -2.0 * コサイン(omega)
	a2 は、  1.0 - alpha
	b0 は、  (1.0 - コサイン(omega)) / 2.0
	b1 は、  1.0 - コサイン(omega)
	b2 は、  (1.0 - コサイン(omega)) / 2.0
	size は、  360
	in1 は、  0
	in2 は、  0
	out1 は、  0
	out2 は、  0
	iを0からsizeまで増やしながら繰り返す
		値は、 b0 / a0 * inputの(i + 1) + b1 / a0 * in1 + b2 / a0 * in2 - a1 / a0 * out1 - a2 / a0 * out2
		値をoutputへ加える
		in2 は、 in1
		in1 は、 inputの(i + 1)
		out2 は、 out1
		out1 は、 値
	繰り返し終わり
	outputを返す
終わり

[am:倍浮動小数の配列]を、ピンクで描画する手順
	かめの太さは5
	かめの色は、ピンク 
	かめの速さは0
	初期位置は{10, 130}
	かめの位置は、初期位置
	角度は1
	角度が360未満の間、繰り返す
		横は、3 × 角度 + 初期位置(1)
		縦は、amの(角度)× 100.0 + 初期位置(2)
		かめを{横、 縦}へ移動する
		角度は、角度 + 1
	そして
終り

[am:倍浮動小数の配列]を、青で描画する手順
	かめの太さは5
	かめの色は、青
	かめの速さは0
	初期位置は{10, 380}
	かめの位置は、初期位置
	角度は1
	角度が360未満の間、繰り返す
		横は、3 × 角度 + 初期位置(1)
		縦は、amの(角度)× 100.0 + 初期位置(2)
		かめを{横、 縦}へ移動する
		角度は、角度 + 1
	そして
終り

[am:倍浮動小数の配列]を、白で描画する手順
	かめの太さは5
	かめの色は、白 
	かめの速さは0
	初期位置は{10, 530}
	かめの位置は、初期位置
	角度は1
	角度が360未満の間、繰り返す
		横は、3 × 角度 + 初期位置(1)
		縦は、amの(角度)× 100.0 + 初期位置(2)
		かめを{横、 縦}へ移動する
		角度は、角度 + 1
	そして
終り

	
	

以上。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?