- 説明よりソースの人の為に
- [https:./inc/sZfuncAdd.js]
- 今までの流れ
- z変換で周波数特性を得るjavascript作成奮戦記 がある程度動いたので
- JavaScriptでラプラス変換の伝達関数を求める でs式で周波数特性を求めるようにしたら
- こうしてZもsもまとめて扱える事に気づきました・・・という経緯です
- z変換のZは1遅延演算子であり、それはラプラス変換のeのs乗で表現出来ますからね
- だから式中にZとsを混在させてもエラーにはしていません。大抵はミスでしょうけど
- 変更点として
- 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でない場合は別です
プライバシーポリシー本文は日本語以外に翻訳禁止