diff --git a/dea_api.py b/dea_api.py index 0abdbca..d2c3cfd 100755 --- a/dea_api.py +++ b/dea_api.py @@ -73,6 +73,9 @@ class DesignParams(BaseModel): notch_q: float = Field(default=1.0, gt=0) opoz_fz: float = Field(default=15000.0, gt=0) opoz_fp: float = Field(default=10.0, gt=0) + tp1z_fz: float = Field(default=200.0, gt=0) + tp1z_fp1: float = Field(default=10.0, gt=0) + tp1z_fp2: float = Field(default=5000.0, gt=0) tptz_fz1: float = Field(default=200.0, gt=0) tptz_fz2: float = Field(default=25000.0, gt=0) tptz_fp1: float = Field(default=10.0, gt=0) @@ -187,6 +190,17 @@ def design_filter(params: DesignParams): b_new, a_new = signal.bilinear(b_s, a_s, fs=fs_val) dc_gain = np.sum(b_new) / np.sum(a_new) b_new = b_new / dc_gain + elif f_type == "2P1Z (二極一零)": + validate_frequency("2P1Z 零點頻率", params.tp1z_fz, fs_val, below_nyquist=False) + validate_frequency("2P1Z 極點頻率 1", params.tp1z_fp1, fs_val, below_nyquist=False) + validate_frequency("2P1Z 極點頻率 2", params.tp1z_fp2, fs_val, below_nyquist=False) + w_z = 2 * np.pi * params.tp1z_fz + w_p1, w_p2 = 2 * np.pi * params.tp1z_fp1, 2 * np.pi * params.tp1z_fp2 + b_s = [1.0, w_z] + a_s = [1.0, w_p1 + w_p2, w_p1 * w_p2] + b_new, a_new = signal.bilinear(b_s, a_s, fs=fs_val) + dc_gain = np.sum(b_new) / np.sum(a_new) + b_new = b_new / dc_gain elif f_type == "2P2Z (二極二零)": validate_frequency("2P2Z 極點頻率 1", params.tptz_fp1, fs_val, below_nyquist=False) validate_frequency("2P2Z 極點頻率 2", params.tptz_fp2, fs_val, below_nyquist=False) diff --git a/src/App.vue b/src/App.vue index 0e1c67e..902275b 100644 --- a/src/App.vue +++ b/src/App.vue @@ -336,14 +336,14 @@ - +
運算說明:
- 調整時,系統會先將現有係數四捨五入至三位小數再計算基準值。調整結果會自動將 a1, a2 存回為三位小數精度。
+ 係數固定對齊到小數點後第三位。微調後請按「套用」更新圖表;觸控時按住數值面板上下拖曳。