次の1次IIRフィルターを想定します。
IIRが最後のサンプルの算術平均であるFIRを可能な限り近似するパラメーター st を選択するにはどうすればよいですか。
ここで、、つまりIIRの入力はよりも長くなる可能性がありますが、最後の入力の平均の最適な近似が必要です。
IIRには無限のインパルス応答があるため、最適な近似を探しています。またはコスト関数のいずれであっても、分析ソリューションが必要です。
この最適化問題は、1次IIRのみを与えられた場合、どのように解決できますか
ありがとう。
次の1次IIRフィルターを想定します。
IIRが最後のサンプルの算術平均であるFIRを可能な限り近似するパラメーター st を選択するにはどうすればよいですか。
ここで、、つまりIIRの入力はよりも長くなる可能性がありますが、最後の入力の平均の最適な近似が必要です。
IIRには無限のインパルス応答があるため、最適な近似を探しています。またはコスト関数のいずれであっても、分析ソリューションが必要です。
この最適化問題は、1次IIRのみを与えられた場合、どのように解決できますか
ありがとう。
回答:
がスカラーであるという分析的な解決策はありません(私は思う)。これは、与えられたに対してを与えるスクリプトです。オンラインで必要な場合は、LUTを作成できます。スクリプトは最小化するソリューションを見つけます
ここで、はFIR周波数応答、はIIR周波数応答です。
Kの範囲を指定しませんでした。しかし、次のシステムは平均フィルターと同等であり、計算の複雑さは同じで、一次IIRであることを明確にしたいだけです。
function a = find_a(K)
w = 0.0001:0.001:pi;
as = [-1:0.001:-0.001 0.001:0.001:1];
E = zeros(size(as));
for idx=1:length(as)
fJ = J(w,as(idx),K);
E(idx) = sum(fJ);
end
[Emin, indx] = min(E)
a = as(indx)
function f = J(w,a,K)
num = 2*(2-a)*(1-cos(w*K)) + 2*(cos(w*(K-1)) - cos(w)) - 2*(1-a)*(cos(w)-cos(w*(K+1)));
den = (2-a)^2 + 1 + (1-a)^2 + 2*(1-a)*cos(2*w) - 2*(2-a)^2*cos(w);
f = -(a/K)*num./den;
f = f+(1/K^2)*(1-cos(w*K))./(1-cos(w))+a^2./(1+(1-a)^2-2*(1-a)*cos(w));
end
end
Micro Signal Architectureを使用したEmbedded Signal Processingのこの問題については、おおよそ63〜69ページで説明されています。上のページ63は、(そのniarenはで与えた移動平均フィルタの正確な再帰の導出を含む彼の答え)
次の説明に関する便宜上、次の差分方程式に対応します。
指定したフォームにフィルタを置く近似と仮定必要ので、(から及びIの引用頁。68)「の平均であり、サンプル「。この近似により、前述の差分方程式を次のように簡略化できます。、Y N - 1 X nは
設定、我々は元の形、到着係数必要なことを示し、(この近似に関して)は正確に(はサンプル数です)。 YN=αXN+(1-α)YN-11 N
この近似は、ある意味で「最良」ですか?確かにエレガントです。N = 3の場合と、Nが10に増加した場合(青の近似値)の振幅応答の比較([44.1kHz]):
![N = [3,10]](https://i.stack.imgur.com/qOpek.png)
ピーターの答えは示唆して、再帰型フィルタとFIRフィルタを近似することは、最小二乗規範の下で問題となる可能性があります。一般にこの問題を解決する方法の詳細な議論は、JOSの論文「デジタルフィルター設計のテクニックとバイオリンへの応用を伴うシステム同定」にあります。彼はハンケルノルムの使用を提唱していますが、位相応答が重要でない場合は、このケースでうまく機能する可能性のあるKopecの方法もカバーしています(そしてノルムを使用しています)。論文のテクニックの広い概要はここで見つけることができます。他の興味深い近似値が得られる場合があります。
OK、最良のものを導き出しましょう: そうの係数はです。 X[N-M]α(1-α)M
最適な平均二乗近似は最小化します: m>k−1
次のステップは、導関数を取り、ゼロに等しくすることです。
派生のプロットを見るとのためにと 0から1へ、それが問題のように見える(私はそれを設定したとして)最良の答えであるため、不良設定である。K = 1000年α α = 0

ここに間違いがあると思います。私の計算によると、その方法は次のとおりです。
MATLABで次のコードを使用すると、異なるものの同等のものが生成されます。
syms a k;
expr1 = (a ^ 2) * ((1 - ((1 - a) ^ (2 * k))) / (1 - ((1 - a) ^ 2)));
expr2 = ((2 * a) / k) * ((1 - ((1 - a) ^ (k))) / (1 - (1 - a)));
expr3 = (1 / k);
expr4 = ((a ^ 2) * ((1 - a) ^ (2 * k))) / (1 - ((1 - a) ^ (2)));
simpExpr = simplify(expr1 - expr2 + expr3 + expr4);
とにかく、それらの機能には最小限のものがあります。
それでは、FIRフィルターのサポート(長さ)の近似のみを実際に考慮していると仮定しましょう。その場合、最適化の問題は次のようになります
プロットの種々の値に対する対以下プロットとテーブルの日付をもたらします。
以下のための = 8 = 0.1533333 ための = 16 = 0.08 について = 24 = 0.0533333 ための = 32 = 0.04 の場合 = 40 = 0.0333333 について = 48 = 0.0266667 について = 56 = 0.0233333 について = 64。
= 0.02
の場合 = 72 = 0.0166667

赤い破線は、緑の線はで、を最小化するの値(から選択)。
実験的試験に基づくk(2〜100)の範囲内のベストフィット(和二乗誤差)の関係が得られるalfa = 1/k^0.865
ことkMovAvgフィルタのサンプル数を
この古い質問につまずいたので、解決策を共有したいと思います。他の回答で述べたように、分析的な解決策はありませんが、最小化する関数はうまく動作し、最適値は数回のニュートン反復で簡単に見つけることができます。結果の最適性を確認するための式もあります。
長さ FIR移動平均フィルターのインパルス応答は、次の式で与えられます。
ここで、は単位ステップ関数です。一次IIRフィルター
インパルス応答を持っています
今の目標は、二乗誤差を最小化することです
使用してと、エラーは次のように書くことができます。
この表現は、この回答で与えられた表現と非常に似ていますが、同一ではありません。上の制限における確認無限和が収束することになり、それはによって与えられたIIRフィルタの安定条件と同一である。
微分をゼロに設定すると、
なお、最適間隔でなければならないためのより大きな値交流インパルス応答をもたらす移動平均フィルタFIR一定のインパルスrepsonseを近似することができません。
平方根を取り、を導入すると、
この方程式はに対して解析的に解くことができませんが、に対して解くことができます:N
式を使用して、数値解を再確認できます。指定された値を返す必要があります。(7 )N
式は、数行の(Matlab / Octave)コードで解決できます。
N = 50; FIR移動平均フィルターの望ましいフィルター長の%
if(N == 1)%自明な場合の反復なし
b = 0;
他に
%ニュートン反復
b = 1; 開始値の割合
Nit = 7;
n =(N + 1)/ 2;
k = 1:Nitの場合、
f = b ^ n + b ^(n-1)-1;
fp = n * b ^(n-1)+(n-1)* b ^(n-2);
b = b-f / fp;
終わり
チェック結果の割合
N0 = -2 * log(1 + b)/ log(b)+ 1%はNと等しくなければなりません
終わり
a = 1-b;
以下は、フィルター長範囲に対する最適値を含む表です。N
Nアルファ 1 1.0000e + 00 2 5.3443e-01 3 3.8197e-01 4 2.9839e-01 5 2.4512e-01 6 2.0809e-01 7 1.8083e-01 8 1.5990e-01 9 1.4333e-01 10 1.2987e-01 20 6.7023e-02 30 4.5175e-02 40 3.4071e-02 50 2.7349e-02 60 2.2842e-02 70 1.9611e-02 80 1.7180e-02 90 1.5286e-02 100 1.3768e-02 200 6.9076e-03 300 4.6103e-03 400 3.4597e-03 500 2.7688e-03 600 2.3078e-03 700 1.9785e-03 800 1.7314e-03 900 1.5391e-03 1000 1.3853e-03