MATLAB Answers

Dai
0

Cell-Averaging CFAR Detectorにお​けるCUTが端のセル​の場合の処理について

Asked by Dai
on 18 Jun 2019
Latest activity Commented on by Dai
on 20 Jun 2019
English is OK.
"Phased Array System Toolbox"の"phased.CFARDetector関数を使っています。
配列データを入力させたとき、CUTの左右のデータをガードセル、トレーニングセルとして参照しますが、
図のようにCUTが端のセルの場合、ガードセル、トレーニングセルはどこのセルを参照するのでしょうか?
(オーバーラップした反対側のセルを参照する?)

  0 Comments

Sign in to comment.

1 Answer

Answer by Shunichi Kusano on 19 Jun 2019
 Accepted Answer

コードをたどってみますと、配列からはみ出す部分については考慮されないようです。図だとターゲットから見て右半分のウィンドウだけを使って計算されることになり、配列からはみ出す左半分の窓はそもそもないものとなります。
もし、図のように循環的な窓にしたいなどがありましたら、あらかじめ入力する配列の外側をパディングする方法が考えられます。その際に循環的に反対側の値を使うのか、端の値で埋めるのか、鏡合わせのようにするのか、任意の値にするかは選ぶことができます。

  3 Comments

Dai
on 20 Jun 2019
ありがとうございます。
おっしゃるとおり、事前に配列をパディングすることで循環的な窓にできますね。
ちなみに配列からはみ出す部分については考慮されないとのことですが、ためしに以下のコードを実行すると、端のセルで予想と異なる結果が出ました。
この場合、端のセルはどのように計算をしているのでしょうか?
予想:CfarNoise = [2 3 2.5 4.5 3;
9 3.5 7.5 3 2]
実際:CfarNoise = [3.5 3 2.5 4.5 4;
6.5 3.5 7.5 3 5]
----------------------------------------------------
%入力データ
InputData = [1 2 5 3 4;
3 9 4 6 2];
%入力データの行と列
row = 2;
col = 5;
%CFARのノイズセルを格納する配列を準備
CfarNoise = zeros(row, col);
%CFAR設定(Cell Averaging、ガードセル0、トレーニングセル2)
cfar = phased.CFARDetector('Method', 'CA', 'NumGuardCells', 0,...
'NumTrainingCells', 2, 'NoisePowerOutputPort', true);
%CFARを実行し、結果を格納
for m = 1 : row
[~, CfarNoise(m, :)] = cfar(InputData(m, :)', 1 : col);
end
----------------------------------------------------
大変失礼いたしました。
はみ出す方にばかり注目して、逆側の読み込みが足りませんでした。
正しくは次のようになります。
はみ出す側:配列に収まる範囲のみを考慮
その逆側:はみ出した分を補填するよう拡張。
となります。
上の場合ですと、一番端がターゲットになっているときは、片側1サンプル分がはみ出すため、その分逆側は2サンプルとる、という仕様になっています。「実際」と一致します。
Dai
on 20 Jun 2019
ご回答ありがとうございます。
はみ出したセル分は逆側で補填しているんですね。それには気づきませんでした。
こちらでも「実際」と一致すること確認できました。
ご対応いただきありがとうございました。

Sign in to comment.