裏目小僧の部屋

z変換とラプラス変換で周波数特性を得るjavascript

説明よりソースの人の為に
[https:./inc/sZfuncAdd.js]
お名前: コメント:
お名前
件名
本文
今までの流れ
変更点として
fsもLBのプロパティとして渡すようにし 他の変数も
H:=2; とすれば let H;if(LB.H) H=LB.H;else LB=2; のようにLB.Hがあればそちらが代入されます
f0: と"="や";"でなくコロン":"で区切れば let f0=LB.f0;と出力されます
なおf0とQはそれを省略しても式中で使われていれば 同じように出力されます
  • 使えるのは大文字Zだけ (Z=1/z)の意味ですが 小文字zは使えなくなりました
    • 無理して組み込んだ割には使い道がないので

 使用方法

zfResponseMk(p,LB) pで渡したラプラス変換 Z変換式 周波数特性得る関数を作る LBに変数名 帰り値に数式
PaintLogLevグラフ表示関数
z=zMake(FormName,viewF,param) 上の2つを使ってグラフ表示をさせる
  FormName:form ID を渡す そのIDのフォームには
   sCanvas というnameのcanvasを必ずつける事
   ボタンがあれば、そのvalue名のtextareaを式として押せばグラフ表示するイベント設定
   range スライダーがあればLBに設定するようにイベント設定
  viewF:必要ならTFFTViewFを変更して渡す 不要なら"":空文字
        たとえば角度表示をしないなら Object.assign({},TFFTViewF,{degH:0}
               角度表示だけなら Object.assign({},TFFTViewF,{degH:4}
  param:"f0=400;Q=0.7"のように 数式中のパラメータを渡す
 zMakeの帰り値オブジェクトをzとすれば
 h=z.zFunc(name,param,add); nameがForm中のtextarea-nameか 無ければ下のsFuncTbl 
                paramがあればパラメータ設定 空文字列なら共通 (addの場合f0等が別になる)
                add=true(数字で0以外)であれば追加 addに帰り値を渡せば更新
 その帰り値をhとすれば              ↓周波数    ↓0:角度 1:dB
 z.addPaint(function (cv,LB){z_Text(cv,h,8000,"HPF",1)} ) のようにグラフ内に文字表示が追加可能
           グラフの指定周波数(数値かz.LB.f0)の0:角度 1:dBの位置に表示される
 z.Show();パラメータ更新時に再描画されるのに必要(Canvas サイズ変更等の後も)

 

要素

Z             大文字Zが1/zを意味する  Zの後の数字はべき乗とみなす(整数のみ)
s s1 s2 s3 s4 ラプラス変換s1〜s4まで
+ - ^  ^はべき乗
* /
() sin() cos() tan() exp() 他 Mathにある単引数関数の多くは使える

 fs PI

Zや変数の前の*は省略可能

変数

  • 変数名は英字1文字+数字のみ(eval機能を使っているので悪戯防止の為の制限)
  • 変数の定義
    • 外部定義
変数:
    • 外部定義で初期値付(スライダー等で変更されると数字も変更されるので判りやすいかも)
変数:=数字;
    • 代入
変数=数式;
  • すべての定義と代入の後に Z変換式か ラプラス変換 s式を書く";"が無い事で認識
外部定義されると
フォーム内のスライダー(input type=range)のnameで操作出来ます
特別な変数
  • f0,Q は自動的に外部定義になります(初期値付外部定義してもよい)
  • f0とQはグラフ上のマウス操作でも変更出来ます
  • a0,a1,..,anは分子のZの係数に使いましょう(a0+a1Z+z2Z2)のように
  • b1,b2,は分母のZの係数に使いましょう。(1-b1Z-b2-Z2)のように。最初が1でない場合は別です

プライバシーポリシー本文は日本語以外に翻訳禁止