Bonjour,
Je fais mes débuts en C++ et j'essaie de programmer la transformée de Fourier Discrète. Je veux en gros que ma classe TFD dispose de deux méthodes, reel et imaginaire, qui m'affiche la partie réelle et imaginaire de la transformée de Fourier de mon échantillon de départ. Quand je compile mon programme, il m'affiche 'double' is not a template et invalid types 'double[int]' for array subscript. Que dois-je faire svp pour régler ce problème, ça me prend la tête depuis quelques heures?
Merci d'avance pour votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 #include "TFD.hh" #include <cmath> #include <vector> using namespace std; TFD::TFD(const int& _dir, const int& _taille, const double<vector>& _x1, const double<vector>& _y1) :dir(_dir),taille(_taille),x1(_x1),y1(_y1){}; double<vector> TFD::reel() const{ double<vector> x2; double arg; double cosarg,sinarg; int i,k; for (int i=0;i<taille;i++) { x2[i] = 0; arg = - dir * 2.0 * 3.141592654 * (double)i / (double)taille; for (int k=0;k<taille;k++) { cosarg = cos(k * arg); sinarg = sin(k * arg); x2[i] += (x1[k] * cosarg - y1[k] * sinarg); } } if (dir == -1) { for (int i=0;i<taille;i++) { x2[i] = x2[i] / (double)taille; } } return x2; } double<vector> TFD::imaginaire() const{ double<vector> y2; double arg; double cosarg,sinarg; int i,k; for (int i=0;i<taille;i++) { y2[i] = 0; arg = - dir * 2.0 * 3.141592654 * (double)i / (double)taille; for (int k=0;k<taille;k++) { cosarg = cos(k * arg); sinarg = sin(k * arg); y2[i] += (x1[k] * sinarg + y1[k] * cosarg); } } if (dir == -1) { for (int i=0;i<taille;i++) { y2[i] = y2[i] / (double)taille; } } return y2; } TFD::~TFD(){}
Partager