No.8ベストアンサー
- 回答日時:
「回答No4.」の「回答に対する補足」に対する回答:
今適当に作ったので,積分範囲と積分の刻み幅は
まちがっているかもしれませんが,
だいたいこんな感じになります.(よね?)
データは配列として用意してください.
なお,見易さ優先で行頭に全角の空白を使っているので,
このままコンパイルするとエラーが出るかもしれません.
------------------------------------------------------------
/*
入力:data[i], i=0..(n-1)
出力:ws[f], wc[f]
*/
dft(int n, float *data, float *ws, float *wc){
int f, t;
for(f=0;f<=n;f++){
ws[i] = wc[i] = 0
for(t=0;t<n;t++){
ws[i] += sin(2*PI*f*t) * data[t];
wc[i] += cos(2*PI*f*t) * data[t];
}
}
}
No.7
- 回答日時:
FFTのプログラムは少々面倒ですが、DFTのプログラム
は非常に簡単です。わずか数行で出来てしまいますの
で、難しいことはありません(定義式をそのまま計算
すればいいのです)。ぜひ、トライしてください。
Cでは複素数の変数型はありませんので、実部と虚部に
分けて計算する(つまり、実部の実数型変数、虚部の
実数型変数、二つの変数を定義してそれぞれ計算す
る)ことに注意してください。つまり、
exp(jx) = cos(x) + j*sin(x)
と分解して考えましょう。Σの計算はforループを使え
ば良いのです。その結果、nobouさんの計算どおり、
デルタ関数のピークが出てきます。
スペクトルの結果を表示する際は、振幅と位相にわけ
てグラフを表示すると見やすくなります。
目盛りの読み方も大事なので、ここで書きたいところ
ですが、説明が長くなってしまいますので、割愛しま
す。とりあえずプログラムを作ってみて、結果を考察
してみてはいかがでしょう?
No.5
- 回答日時:
一応FTを計算しておきましょう
g(t)のフーリエ変換をG(f)とすると
G(f)≡∫(-∞<t<∞)dt・g(t)・exp(-j・2・π・f・t)
です
g(t)=A・sin(2・π・f0・t)
であれば
G(f)≡∫(-∞<t<∞)dt・g(t)・exp(-j・2・π・f・t)
=∫(-∞<t<∞)dt・A・sin(2・π・f0・t)・exp(-j・2・π・f・t)
=∫(-∞<t<∞)dt・
A・(exp(-j・2・π・(f-f0)・t)-exp(-j・2・π・(f+f0)・t))/2/j
=(δ(f-f0)+δ(f+f0))・A/2/j
次に
gs(t)=Σ(-∞<n<∞)・g(t)・δ(t-n/fs)
としgs(t)のフーリエ変換をGs(f)とすると
Gs(f)≡∫(-∞<t<∞)dt・gs(t)・exp(-j・2・π・f・t)
=Σ(-∞<n<∞)・g(n/fs)・exp(-j・2・π・f・n/fs)
=fs・Σ(-∞<k<∞)・G(f-k・fs)
=Σ(-∞<k<∞)・
(δ(f-k・fs-f0)+δ(f-k・fs+f0))・fs・A/2/j
です
No.4
- 回答日時:
さらにかいつまんで。
・「100Hzのsin波」とは、1秒間で100周期の正弦波。
・「1kHzでサンプリング」とは、一秒あたり1000個の
点で波形を表す(近似する?)こと。
もともとの正弦波をx(t)=sin(2*PI*f*t)とします。
それをT=1/1000秒ごとに正弦波の値を拾っていきま
す。当然ながら、Tの値が小さいほど(サンプリング
周波数が高いほど)正弦波を正しく表すことができ
ます。
式で表すと、時刻がt=n*T (n=1,2,..,N-1)のときに
xの値を拾っていきます。
したがって正弦波は、x(n*T)=sin(2*PI*f*n*T),
n=0,1,2,3,...,N-1というN個の値で表されます。
たとえば、2秒間計測するのであればN=2000、10秒間
計測するのであればN=10000となります。逆にN=1024
として計測するのであれば、時間は1.024秒かかりま
す。
このx(n*T)をDFTのアルゴリズムで計算すると(離散)
スペクトルが得られます。
すでに回答がありましたが、x(t)のスペクトルを得る
のは、通常いわれているフーリエ変換(フーリエ積分)
です。これはあくまで理想的な変換式なので、コンピ
ュータでは計算できません。そこで、DFTが誕生したわ
けです。
蛇足ですが、DFTのアルゴリズムに工夫を加えて計算速
度を上げたものをFFT(高速フーリエ変換)といいま
す。計算結果はどちらも同じです。
かいつまんで書くつもりが長くなってしまいました…
この回答への補足
とても詳しい説明ありがとうございます。
勉強になりました。
このような計算(サンプリング周波数は1KHzとして、100Hzのsin波をフーリエ変換DFTする。 )をC言語で計算することは可能でしょうか?
また、どんなプログラムを組むと、計算できるのでしょうか?
いろいろと質問してしまって申し訳ないですが、よろしくお願いいたします。
No.3
- 回答日時:
すでに、お答えは出ているようですが、かいつまんで。
質問に対する回答は、「離散フーリエ変換(DFT)を用いる際、100Hzのsin波を1KHzでサンプリングした」と言うことだと思います。
フーリエ変換は時間変化の波形を周波数分析する事ですが、アナログ的にやるのがフーリエ変換、ディジタル的にやるのが離散フーリエ変換です。
参考URLにもあるとおり、「分析したい波に含まれる最高周波数の2倍以上の周波数でサンプリングすれば、もとの波は完全に再現できる」(シャノンのサンプリング定理)ということを利用してディジタル的に行なっているのが離散フーリエ変換です。100Hzのsin波が純粋なものか歪波なのか判りませんが、400Hzまでの高調波が含まれていても再現可能であるといえます。(500Hzは限界で微妙)
参考URL:http://ziong.cs.kobe-u.ac.jp/~inamoto/TA/spectru …
No.2
- 回答日時:
DFTは離散フーリエ変換でありフーリエ変換ではない
フーリエ変換はFTである
振幅A周波数f0の正弦波は
g(t)=A・sin(2・π・f0・t)
である
これを周波数fsのサンプリング周波数でサンプリングした信号は
gs(t)=Σ(-∞<n<∞)・g(t)・δ(t-n/fs+τ)
である
t=0をづらしてτは扱いやすいように0にすることが多い
すなわち
gs(t)=Σ(-∞<n<∞)・g(t)・δ(t-n/fs)
質問ではf0=100[Hz],fs=1[kHz]である
なおデルタ関数に当惑されるかも知れないがこれは連続時間信号と離散時間信号を扱いやすいようにするために現れたものである
要するにサンプリングとは
・・・,f(-3/fs),f(-2/fs),f(-1/fs),f(0/fs),f(1/fs),f(2/fs),f(3/fs),・・・
以外の関数値を捨てるということである
No.1
- 回答日時:
「フーリエ変換(DFT)を用いて、100Hzのsin波を1KHzでサンプリングする」とは
「100Hzのsin波を1KHzでサンプリングして,フーリエ変換(DFT)する」
という意味だと思います.言い換えると,
「ある波(実は100Hzのsin波)をフーリエ変換(DFT)する.
その際の,サンプリング周波数は1KHzとする.」
ですね.
--------------------------------
たぶん,上のような回答を求めているのではないですね.
フーリエ変換の意味は知っていますか?
100Hz,1KHzなどのあらわす意味は知っていますか?
サンプリングの意味は知っていますか?
DFTの意味は知っていますか?
はじめの二つは調べればわかる,または,知っていると仮定すると…….
--------------------------------
サンプリングの意味
この場合,「1KHz(1秒に1000回)入力値を測定して,
DFTに用いる」という意味になります.
DFTの意味
Dは離散(descrete)のDです.
フーリエ変換自体は「連続関数を積分を用いて変換するもの」(やや自信なし)
ですが,DFTでは「微小時間ごとの関数の値」という離散的な値を使って
和(Σ)によって変換します.
サンプリングの例
周波数1/16
(波長16)の波
(を周波数1で 周波数1/2で… 周波数1/17で…
サンプリング)
-----*-----00 -----*-----00 -----*-----000
-----+*----01 -----+-*---02 -----+*----017
-----+-*---02 -----+--*--04 -----+-*---034
-----+--*--03 -----+-*---06 -----+--*--051
-----+--*--04 -----*-----08 -----+--*--058
-----+--*--05 ---*-+-----00 -----+--*--075
-----+-*---06 --*--+-----12 -----+-*---092
-----+*----07 ---*-+-----14 -----+*----099
-----*-----08 -----*-----16 -----*-----116
----*+-----09 -----+-*---18 ----*+-----133
---*-+-----10 -----+--*--20 ---*-+-----130
--*--+-----11 -----+-*---22 --*--+-----157
--*--+-----12 -----*-----24 --*--+-----174
--*--+-----13 ---*-+-----26 --*--+-----191
---*-+-----14 --*--+-----28 ---*-+-----198
----*+-----15 ---*-+-----30 ----*+-----215
-----*-----16 -----*-----32 -----*-----232
サンプリング周波数が大きければ大きいほど,
元の音のデータを多く使うので,
元のデータをよく表す変換後のデータが得られます.
ただし,データ数が多いので,計算が大変になります.
逆に,
サンプリングレートがもとの波の周波数よりもだいぶ小さい場合
(元の波の1/2波長よりも波長が長くなる場合)(図右),
元の波を再現することはできなくなります.
(やや自信なし)
図右はじの例では,波長232(周波数1/232)の波に対応する
変換結果が得られてしまいます.
この辺のことから感覚的にわからないでしょうか.
--------------------------------
系統だった勉強をしたり,誰かに教えてもらったわけではないので,
説明するのは下手なようです…….
どこがわからないのかわからないと,説明が難しい.
この回答への補足
そうです、100Hzのsin波をフーリエ変換(DFT)する.
その際の,サンプリング周波数は1KHzとする.
言いたかったことは、まさにそういうことです。
説明が悪くてすみません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 工学 周波数fで表現したフーリエ変換の対称性に関する質問です。 1 2022/09/14 12:27
- 数学 「FFTの基本は、DFTはサンプル数Nが偶数なら 2つのDFTに分解できるということ。 分解するとD 3 2022/03/31 21:01
- 物理学 フーリエ変換の振幅について 1 2022/09/04 08:56
- 数学 フーリエ変換、逆変換の「2π」の扱いについて 3 2022/10/07 08:31
- 数学 数学の質問です。 関数f(t)のフーリエ変換をF(ω)=∫[-∞→∞]f(t)exp(-iωt)dt 1 2023/07/29 01:08
- 数学 フーリエ変換についての質問です。 h(t)=cos(ω0t)×cos(ω1t) のフーリエ変換を教え 1 2022/07/23 17:37
- 物理学 どのような意味 2 2022/10/04 12:29
- 数学 f(x)のフーリエ変換をF(ξ) g(x)のフーリエ変換をG(ξ)とする時、 ①f(ax+b)のフー 1 2023/02/06 18:25
- 物理学 複素フーリエ級数展開からフーリエ変換 1 2023/05/12 16:15
- 数学 f(x)=1(0<x<1),0(それ以外)とするとき、 fのフーリエ変換とf×fのフーリエ変換を求め 3 2022/12/18 18:18
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
至急!尿検査前日にオナニーし...
-
首吊りどこ締めるの
-
尿検査の前日は自慰控えたほう...
-
尿検査前日に自慰行為した時の...
-
1日前の検尿
-
腕を見たら黄色くなってる部分...
-
変な話しになります。尿検査で...
-
値が入っているときだけ計算結...
-
射精をして1週間以内に尿検査を...
-
これって喉仏ですか? 私は女性...
-
検便についてです。 便は取れた...
-
今朝、毎朝の習慣でオナニーし...
-
彼女のことが好きすぎて彼女の...
-
白血球が多いとどんな心配があ...
-
2つの数値のうち、数値が小さい...
-
エクセルでエラーが出て困って...
-
ある範囲のセルから任意の値を...
-
EXCELで条件付き書式で空白セル...
-
口の中に黒い血の塊
-
勃起する時って痛いんですか? ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
中出しをするとお腹が痛い・・・。
-
麻疹風疹の抗体検査結果につい...
-
エクセルでエラーが出て困って...
-
白血球が多いとどんな心配があ...
-
彼女のことが好きすぎて彼女の...
-
検便についてです。 便は取れた...
-
勃起する時って痛いんですか? ...
-
至急!尿検査前日にオナニーし...
-
納豆食べた後の尿の納豆臭は何故?
-
これって喉仏ですか? 私は女性...
-
EXCELで条件付き書式で空白セル...
-
精子が黄色?
-
小数点以下を繰り上げたものを...
-
値が入っているときだけ計算結...
-
口の中に黒い血の塊
-
健否~書類の書き方~
-
甲状腺が腫れているが血液検査...
-
はしかの抗体検査は何科の病院...
-
テスターで断線を調べる方法教...
おすすめ情報