質問するログイン新規登録

質問編集履歴

1

現在のコードと説明を追記

2018/07/10 00:21

投稿

kkksan
kkksan

スコア6

title CHANGED
File without changes
body CHANGED
@@ -4,4 +4,31 @@
4
4
  FFT⇒1KHzのみ残すようにフィルタリング⇒iFFT で1kHzの成分のみが出るようなきがするのですが、math.net numericsで具体的にどうやるのかわからず、困っています。
5
5
  また、他の良い方法がを知っていたらご教授願います。
6
6
 
7
- 環境は VS2015のC#にてmath.net numerics を使用して高速フーリエ変換を行っています。
7
+ 環境は VS2015のC#にてmath.net numerics を使用して高速フーリエ変換を行っています。
8
+ 追記1 FFT解析
9
+ /// <summary>
10
+ /// FFT解析
11
+ /// <param name="data">解析値</param>
12
+ /// <param name="complexData">戻り値</param>
13
+ /// </summary>
14
+ public static void FFT(double[] data, ref Complex[] complexData)
15
+ {
16
+  complexData = data.Select(v => new Complex(v, 0.0)).ToArray();
17
+ Fourier.Forward(complexData, FourierOptions.Matlab);
18
+ }
19
+
20
+ ここまでは作成済み complexDataがFFT解析の結果になるのですが、これを
21
+
22
+ public static void iFFT(ref Complex[] spectrum)
23
+ {
24
+ Fourier.Inverse(spectrum);
25
+ }
26
+
27
+ のようにやると逆変換になると思う。
28
+
29
+ FFT → iFFT を実行する前に FFT解析後,Complexデータを1kHzの周波数成分のみにフィルタリング後,iFFTをすると。 Complexデータの実部が1kHzの周波数のみになっている? ようなことをやろうとしていますがComplexデータのフィルタリング方法がわからない。FFTは詳しくないのでそもそも間違っているのか?
30
+
31
+ 追記2 ローパスフィルタ
32
+ http://vstcpp.wpblog.jp/?page_id=523
33
+
34
+ 上記サイトを参考にローパスフィルタをC#作成 そもそも音の信号ではない為、がっちりと当てはまっていないのかも