SDR(Software defined Radio)をシュミレートして、AM復調

作品プログラム
動作環境
プロデル 2.0.1322 Windows 11 Pro 64ビット
投稿者
ohisama
投稿日
2025-07-28 10:59:49
ダウンロード数
92

作品のプログラム

窓というウィンドウを、作る
  その内容は、「AM復調」
  その大きさは、{900, 700}
窓を、表示する
かめというカメを、作る
  その位置は、{20, 60}
かめを窓に、表示する
sinは、sin波
sinを、ピンクで描画する
amは、am波
amを、青で描画する
dmは、amで、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と500でlpf
  Q2は、Q1を8000と500でlpf
  tは、1
  tが361未満の間、繰り返す
    【値:倍浮動小数】は、 平方根(I2の(t) * I2の(t) + Q2の(t) * Q2の(t) )
    結果に値を加える
    tは、t + 1
  そして  
  結果を返す
終り

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

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

  
  
	

▲ページの先頭へ