Bonjour à tous;
Je commence en C++ et je souhaite faire du filtrage. Après le filtrage, j'aimerais récupérer le maximum du signal filtré ainsi que l'indice correspondant. Voici le code définissant la classe filtre:
#include<vector>
#ifndef FILTRES_H_
#define FILTRES_H_
class Filtres
{ /*
sig = signal à filtrer
sigfiltre = signal filtré
h = les coefficients du filtre
n = nombre d'échantillons
ncoef = ordre du filtre
*/
public:
void highpass(float *sig,float *sigfiltre, float *h,int n, int ncoef);
float findMax(vector<float> T);
int findInd(vector<float> Tab);
};
#endif /*FILTRES_H_*/
Le fichier.cpp est le suivant:
#include "Filtres.h"
#include <vector>
#include<math.h>
void Filtres::highpass(float *sig,float *sigfiltre,float *h,int n, int ncoef )
{
int j,p;
for(j=0;j<n;j++){sigfiltre[j]=0;} //remise à zeros du vecteur contenant le signal filtre
for (p=ncoef;p<n;p++)
{
for (int l=0;l<ncoef;l++)
{
sigfiltre[p-ncoef/2]+= h[l]*sig[p-l];
}
}
}
float Filtres::findMax(vector<float> T)
{
float Maxtab = 0;
for (int i=0;i<T.size(); i++)
{
if (T[i]>Maxtab) {Maxtab = T[i];}
}
return Maxtab;
}
int Filtres::findInd(vector<float> tab)
{ int indice = 0;
int t;
if tab.size()) >0
{ for ( t=0;t<tab.size(); t++)
{
if (tab[t]>tab[indice]) {indice=t;}
}
}
return indice;
}
A la compilation j'obtiens les erreurs suivantes: 'vector was not declared in this scope' et par conséquent mes variables T et tab apparaissent comme des variables non déclarés.
Votre aide est la bienvenue.
D'avance merci;
Partager