質問編集履歴

1

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

2018/07/10 00:21

投稿

kkksan
kkksan

スコア6

test CHANGED
File without changes
test CHANGED
@@ -11,3 +11,57 @@
11
11
 
12
12
 
13
13
  環境は VS2015のC#にてmath.net numerics を使用して高速フーリエ変換を行っています。
14
+
15
+ 追記1 FFT解析
16
+
17
+ /// <summary>
18
+
19
+ /// FFT解析
20
+
21
+ /// <param name="data">解析値</param>
22
+
23
+ /// <param name="complexData">戻り値</param>
24
+
25
+ /// </summary>
26
+
27
+ public static void FFT(double[] data, ref Complex[] complexData)
28
+
29
+ {
30
+
31
+  complexData = data.Select(v => new Complex(v, 0.0)).ToArray();
32
+
33
+ Fourier.Forward(complexData, FourierOptions.Matlab);
34
+
35
+ }
36
+
37
+
38
+
39
+ ここまでは作成済み complexDataがFFT解析の結果になるのですが、これを
40
+
41
+
42
+
43
+ public static void iFFT(ref Complex[] spectrum)
44
+
45
+ {
46
+
47
+ Fourier.Inverse(spectrum);
48
+
49
+ }
50
+
51
+
52
+
53
+ のようにやると逆変換になると思う。
54
+
55
+
56
+
57
+ FFT → iFFT を実行する前に FFT解析後,Complexデータを1kHzの周波数成分のみにフィルタリング後,iFFTをすると。 Complexデータの実部が1kHzの周波数のみになっている? ようなことをやろうとしていますがComplexデータのフィルタリング方法がわからない。FFTは詳しくないのでそもそも間違っているのか?
58
+
59
+
60
+
61
+ 追記2 ローパスフィルタ
62
+
63
+ http://vstcpp.wpblog.jp/?page_id=523
64
+
65
+
66
+
67
+ 上記サイトを参考にローパスフィルタをC#作成 そもそも音の信号ではない為、がっちりと当てはまっていないのかも