2015/8/24 (月) 13:04:37 taki |
困っています。助けてください。
音声の線形予測分析でスペクトル包括を求めています。
n次のLPC係数とそれぞれの残差分散が配列a[n],e[n]として求まった段階です。
スペクトル包括はFIRフィルター?のフィルタ係数として求めたa[n],e[n]を
代入すれば求まるそうです。
参考にしたWebページは
http://mitsui725.blogspot.jp/2013/08/c.html
C言語で書かれたプログラムをPascalに書き直しているのですが、複素数を扱う
complexというのが出てきます。
Delphi XE4 Starter ではVariant形式で複素数を扱うことができることが分かって
います。
悩んでいる内容は以下のような事です。
=== C言語 =========
double N2pi = 2*M_PI/N;
for (n=0;n<N + 1; ++n){
double complex z,x,・・略
x=-I*N2pi * n;
z=cexp(x);
略
これを(我流で)書き換えると
var
n:integer;
N2pi,x,z:Variant;
begin
N2pi := VarComplexCreate;
x := VarComplexCreate;
z := VarComplexCreate;
N2pi := 2.0 * PI / NN; // NNは分割する数で、外部からの値。
for n := 0 to n do begin
x := -I*N2pi * n; // <- ここが分からない
z := exp(x);
-I*N2pi * n;の意味を(-N2pi * n)を虚数部に代入する意味かなと思い、
x.Imaginary := -1.0 * N2pi * n; とかしたのですが、自身がありません。
実数部は0.0のままでいいのかな?
分かっている人からすれば、実際に数値を代入して計算させたら
正しいかどうか分かるんじゃない?と言われると思いますが、複素数の
計算をやったことが無いので、どんな計算をして確かめたらいいのかすら
分かりません。
何かヒントください。 m(_ _)m
環境は
Win7 Pro(32bit) + Delphi XE4 Starter
|
|