0

最小位相 FIR フィルター設計のためにケプストラム デコンボリューションを実装する必要がある小さなコードがありますが、matlab 以外の人であるため、理解するのに苦労しています。誰か助けてくれませんか?

wn = [ones(1,m)
      2*ones((n+odd)/2-1,m)
      ones(1-rem(n,2),m) 
      zeros((n+od d)/2-1,m)];
y = real(ifft(exp(fft(wn.*real(ifft(log(abs(fft(x)))))))));

主に、最初の行、2 行目の ".*" 記号がわかりません。また、おそらくある時点で、2 行目に実数ドメインから複素数ドメインへの変換があるはずですが、どこにあるのかわかりません。何か案は?

4

1 に答える 1

0
  • 最初の行では、行列wnを行ごとに作成しています。

  • .*operator は要素ごとの乗算を意味します。*単独で行列の乗算を意味します。実際、要素ごとの乗算が意味を持つためには、xとのサイズが同じでなければならないことに注意する必要があります。wn

  • 実際には、2 行目に実数から複素数への変換はありません。入力に応じて複素数を返す関数logfftがあります。ifft

helpまたはコマンドでMatlabヘルプにアクセスできますdoc(たとえばdoc ones、関数のドキュメントを生成する必要がありonesます-これにより、引数で指定されたサイズのもので満たされた行列が生成されます)。

コードを調べているときにヘルプをすばやく呼び出すにはF1、カーソルが関数名の末尾 (括弧の直前) にあるときにボタンを押すことで、Matlab のインライン ヘルプを使用できます。

于 2013-05-26T15:30:25.157 に答える