• ベストアンサー

Matlabで群遅延特性

Matlabで、 [gd,f] = grpdelay(b,a,n,fs) と入力すれば群遅延特性が出ますが、 gdの単位をサンプルから、時間に変換するには、 単純にgd/fsでいいのでしょうか。 また、 [h,f] = freqz(b,a,n,fs) の出力から群遅延特性の定義どおり、 dθ(ω)/dω で群遅延を出すには、どのようなプログラムを組めばいいのでしょうか。

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

  • ベストアンサー
  • rabbit_cat
  • ベストアンサー率40% (829/2062)
回答No.1

>単純にgd/fsでいいのでしょうか。 いいと思います。 >どのようなプログラムを組めばいいのでしょうか。 単純に1次近似すれば、 dθ(ω)/dω は diff(unwrap(angle(h))) ./ diff(2*pi*f) で計算できます。 群遅延はこれのマイナスです。

hama2005
質問者

お礼

早速の回答ありがとうございます。 diff(unwrap(angle(h))) ./ diff(2*pi*f) で計算してみたところ、 grpdelay(b,a,n,fs) を使った場合の値と確かに一致しました。 解決しました。ありがとうございました。

関連するQ&A

  • MATLABについてお聞きしたいです。

    MATLABについてお聞きしたいです。 現在勉強しているのですが、プログラミング初心者なので…。 MATLABでwavファイルの書き込みについてです。 周波数1000Hz, 0.5秒,サンプリング周波数22050Hz の設定にしてwavファイルで保存したく… f=1000; > A=0.5; > Fs=22050; > wavwrite(MyFunc_2(1000,0.5,22050),'sin1000'); という設定にして、保存したのですが、録音時に流れた音と録音された音が違うのです。 ファンクションMファイルは… function y=MyFunc_2(f,A,Fs) %Fs=44100; d=1/Fs; t=0:d:2; %f=440; %A=0.1; y=A*sin(2*pi*f*t); wavplay(y,Fs) このような設定にしています。 問題解決への協力よろしくお願いします。

  • MATLABのwavreadについて

    現在、MATLABのソースを見ているのですが。 [y,Fs,bits] = wavread('filename',[N1 N2]) の一文はどういう動作を行っているのでしょうか? マニュアル等をみて以下のことを見つけたのですが、どうにも理解できません。 ・[y,Fs,bits] = wavread('filename') は、Hertz 単位でサンプルレート(Fs)を戻し、ファイルの中のデータを符号化するために使用するサンプルあたりのビット数(bits) も戻します。 ・[...] = wavread('filename',N) は、ファイル内の各チャンネルから最初の N個のサンプルのみを出力します。 どなたかわかりやすく教えていただけないでしょうか、よろしくお願いいたします。

  • Matlabのspdiags関数

    Matlabのspdiags関数に関してわからないところがあります。以下はMatlabのヘルプWebページから持ってきた例です。http://dl.cybernet.co.jp/matlab/support/manual/r2006/toolbox/matlab/math/?/matlab/support/manual/r2006/toolbox/matlab/math/sparse4.shtml B = [ 41 11 0 52 22 0 63 33 13 74 44 24 ]; d = [-3 0 2];、m=7, n=4のとき A = spdiags(B,d,7,4) A = (1,1) 11 (4,1) 41 (2,2) 22 (5,2) 52 (1,3) 13 (3,3) 33 (6,3) 63 (2,4) 24 (4,4) 44 (7,4) 74 これに対応するフル行列Aは、つぎのようになります。 full(A) ans = 11 0 13 0 0 22 0 24 0 0 33 0 41 0 0 44 0 52 0 0 0 0 63 0 0 0 0 74 mやnというのはfull(A)がm行n列の行列であるというイメージの対応がわかるのですが、d = [-3 0 2]とfull(A)の行列の関係がわかりません。-3,0,2というのはfull(A)のどこを見れば良いのでしょうか。

  • MATLABで同じ音を鳴らす?

    MATLAB初心者なのですが、下のようなプログラムを書きました。これではラの音が1回鳴りますが、この音を0.9秒の間隔を置いて3回鳴らしたいのですが、どのようにプログラムを書けばいいのでしょうか? よろしくお願いします。 Fs = 48000; Fq_A = 440; time = Fs / 10; n = 1 : time; tone(n) = 1 * sin(2 * pi * Fq_A * (n-1) / Fs); soundsc(tone, Fs)

  • MATLABのfor文の使い方について

    MATLAB(というかプログラム)初心者です 下記を教えてください よろしくお願いいたします 「つくりたいプログラム」 y1=[A B C] y2=[D E F] ・ ・ ・ y200=[AA BB CC] 上記のような200個くらいある行列に同じ操作をしたいです そこでいちばん簡単な構造を考えました ////////////////////// y1=[A B C] y2=[D E F] for i=1:2 Yi=yi*5 end ///////////// 成功イメージは Y1=[5A 5B 5C] Y2=[5D 5E 5F] となってほしいのですが回りません・・・ yiの定義のしかたがわからず困っております 初歩的な質問かもしれませんが教えてくださいよろしくお願いいたします

  • MATLAB 画像表示に関して

    卒業研究にてMATLABを使用しています。 MATLAB初心者です。 Aの画像とその他の画像を比べる評価実験を行う予定です。 Aの画像を細かく定義 Bの画像を細かく定義 Aの画像を表示させる 5秒たったら、画像をリセットして Bの画像を表示 画像をリセットして終了 というところまでは不格好ながらにもかけました。 これを、 A、B、C、Dの画像を細かく定義 Aの画像5秒間表示後、 リセット(真っ黒の状態に)して ランダムに(B、C、D、E)いずれかの画像を表示させる リセットして終了 という形に変えたいのですが、うまく行きません。 CDEの画像を定義した後、どのようにすればいいのでしょうか? ご教授いただきたく思います。

  • 正規部分群の特性部分群が正規部分群である証明

    G:正規部分群、A:Gの正規部分群、B:Aの特性部分群 とするとき、BはGの正規部分群となること この証明が分かりません。 どうやって証明すればいいのでしょうか? ご教授よろしくお願いいたします。

  • 群っていったい・・

    ここのところ、「群」について勉強しています。 初っぱなから面食らっているのですが、 「集合Gが群をなすとは、任意のGの元 a,b,cについて (1)結合法則:(a・b)・c = a・(b・c) (2)単位元:e・a = a・e = e (3)逆元:a-1・a=e が成り立つこと」 とあります。 漠然とした質問で申し訳ないのですが、 (1) なぜ、こんなことを定義するのでしょうか!? (2) 導入なしにいきなり定義がきて面食らっているのですが、最初に群を考えた数学者はどういう必要性があって(実用問題?)こういうことを考えたのでしょうか?

  • 実数体への無限遠点の添加

    実数に無限遠点を加えた代数系を考えてみました。 何か問題や誤りはありませんか? この代数系では、以前の質問の回答を踏まえて、分配法則が成立します。 http://okwave.jp/qa/q7997401.html --- ここから --- 集合R' = R∪{Ω} 加法は x+Ω=Ω と定義し、次のように計算する。ただし、a, b は 0 でない実数とする。 0+0=0, 0+b=b, 0+Ω=Ω a+0=a, a+b=a+b, a+Ω=Ω Ω+0=Ω, Ω+b=Ω, Ω+Ω=Ω 加法の交換法則と結合法則は成立する。 加法の単位元は 0 であるが、Ω の逆元は存在しない。 乗法は x*Ω=Ω と定義し、次のように計算する。ただし、a, b は 0 でない実数とする。 0*0=0, 0*b=0, 0*Ω=Ω a*0=0, a*b=ab, a*Ω=Ω Ω*0=Ω, Ω*b=Ω, Ω*Ω=Ω 乗法の交換法則と結合法則は成立する。 乗法の単位元は 1 であるが、0 と Ω の逆元は存在しない。 分配法則は成立する。 減法は -Ω=Ω と定義し、次のように計算する。ただし、a, b は 0 でない実数とする。 0-0=0, 0-b=-b, 0-Ω=Ω a-0=a, a-b=a-b, a-Ω=Ω Ω-0=Ω, Ω-b=Ω, Ω-Ω=Ω 除法は 1/0=Ω, 1/Ω=0 と定義し、次のように計算する。ただし、a, b は 0 でない実数とする。 0/0=Ω, 0/b=0, 0/Ω=0 a/0=Ω, a/b=a/b, a/Ω=0 Ω/0=Ω, Ω/b=Ω, Ω/Ω=Ω 絶対値を次のように定義する。ただし、a は 0 でない実数とする。 -|Ω| < -|a| < -|0| = |0| < |a| < |Ω| Ωの平方根を次のように計算する。 √Ω = |Ω| べき乗を次のように定義する。ただし、a はR'の元、n は非負の整数とする。 a^1 = a a^(n+1) = a^n * a a^-n = 1 / a^n 等式の性質は、次の通り。 A=B ならば A+C=B+C A=B ならば A*C=B*C 数列a_n のΩへの収束は、次のように定義する。 ∀K>0 ∃n_0∈N ∀n∈N [n>n_0 ⇒ |a_n| > K] この数列の極限値を lim[n→+∞]a_n = Ω で表す。 lim[n→+∞]a_n = 0 ならば lim[n→+∞]1/a_n = Ω となる。 lim[n→+∞]a_n = Ω ならば lim[n→+∞]1/a_n = 0 となる。 Ωによる極限値は、次のように定義する。 lim[x→+∞]f(x) = lim[x→-∞]f(x) ならば lim[x→Ω]f(x) = lim[x→+∞]f(x) --- ここまで ---

  • 群で単位元について分かりません。

    群を学習するにあたって、単位元というのが出てくるのですが、 教科書には、 もし、演算に単位元が存在するならば、それは一意である。というようなことが書かれていたのですが、 それは、単位元が演算によって決定されるということなんでしょうか? 勿論、仮に二つ単位元が存在した場合、 a,b=単位元 a=a*b=b*a=b となり、a=bとなることはわかります。 ですが、群全体の単位元がaだとして、部分群の単位元がbだとすると、 かならずしもa=bでは無いんじゃないでしょうか? というのも、例えば、掛け算で、R空間全体が群として勿論単位元は1です。 ですが、例えばその部分群{0}では、単位元は0だからです。 a=0, 単位元をbとするとb=0 a*b=b*a=a=0 だからです。 ということは、同じ演算で作られた群でも、違う集合で違う単位元が存在できるということですよね? つまり、教科書で言っているのは、ある特定の群に対し、単位元は一つしかない。 ということであっているでしょうか?? どなたかよろしくお願いします。

専門家に質問してみよう