• ベストアンサー

ハン窓を変形させた窓関数の設計

ハン窓を変形させた窓関数を自分のプログラムで使うことを検討しています。 半値幅を指定して変形させる、添付画像のような数式となります。 このような条件を満たす窓関数(F(x,y))は存在するのでしょうか。 また存在するとすればどのようなものになるのでしょうか。 存在する場合、解法も合わせて教えてくださるととても助かります。 また当方Maximaは使えますので、回答の表記法として採用してくださってもけっこうです。

質問者が選んだベストアンサー

  • ベストアンサー
  • stomachman
  • ベストアンサー率57% (1014/1775)
回答No.1

 cscはcosecant、すなわちsinの逆数のことですよね。以下、変数の変域を   (a,b) = { x | a<x<b}   [a,b] = { x | a≦x≦b} のように書く事にします。   F: [0,1/2]×(0,1) → [0,1]   ∀y(y∈(0,1) ⇒ (F(0,y) = 0 ∧ F(1/2,y) = 1))   ∀x(x∈[0,1/2] ⇒ F(x,1/2) = (1-cos(2πx))/2 )   x(x∈[0,1/2] ∧ F(x,y)=1/2 ⇒ (∂F/∂x)(x,y) = π/sin(πy) ) というご注文。Fは連続関数であるということも追加でご注文なさるでしょう。  これなら、xについて単調増加でF(x,y) = F(x,1-y)であるF(x,y)が構成できます。幾らでもある訳ですが、簡単なのをひとつ作りませう。  まず、{ x | x≦1/2} を定義域として   C(x) = ( x<0のとき0, x≧0のとき (1-cos(2πx))/2 )   S(x) = ( x<0のとき0, x≧0のとき sin(2πx) ) という関数を定義し、さらに α∈[0,1/2]であるαとx∈[0,1/2]を定義域として   D(x,α) = C((x-α)/(1-2α)) と定義すれば、c∈[0,1/2]の範囲で   C(c) = 1/2 となるcは   (c-α)/(1-2α) = 1/4 つまり   c= α/2+1/4 だけであり、そして   S(c) = 1 です。さて、α ≦ x ≦1/2 のとき   (∂D/∂x)(x,α) = (π/(1-2α))S(x) なので、   (∂D/∂x)(c,α) = (π/(1-2α)) そこで   (1-2α) = sin(πy) とおくと、   α = (1-sin(πy))/2 であり、y∈(0,1)のとき0≦α≦1/2を満たしているから、D(x,α)は確かに定義されている。これを使って   F(x,y) = D(x,(1-sin(πy))/2) というんじゃ如何でしょう。

AXRRXA
質問者

お礼

ありがとうございます! いただいた関数と解き方をもとに少し変形させたところ 望み通りの関数となりました。大変助かりました!

関連するQ&A