Calculando inversa de fourrier - ex. musicas
251 palavras
2 páginas
#include #include
#include
#include
void insertionSort(double *vetor, int tamanho_vetor, int *indice, double complex *vTransf); unsigned char* inverseFourier(double complex *coefficients, int N);
//- UMA ESTRUTURA FICARIA MAIS FÁCIL DE MODIFICAR, MAS OCUPARIA MAIS MEMÓRIA DURANTE O PROGRAMA TODO
//- JÁ QUE ESTOU DESALOCANDO ESPAÇO LOGO QUE OS PONTEIROS SE TORNAM INÚTEIS
int main (){ char nome[20]; FILE *arq; scanf("%s", nome); arq = fopen(nome, "rb"); int coeficientes; //- QUANTOS COEFICIENTES O USUÁRIO DESEJA? unsigned char *valores; //- SERÃO GUARDADOS OS VALORES int indice_valores = 1; //- NUMERO DE OBSERVAÇÕES E TAMBÉM É O K valores = malloc(1 * sizeof (unsigned char)); scanf("%d", &coeficientes); int n, k, i; //- VARIÁVEIS AUXILIARES int menores_qzero = 0; //-- LEITURA DO ARQUIVO do { fread(&valores[indice_valores - 1], sizeof(unsigned char), 1, arq); if (feof(arq) != 0) { valores = realloc (valores, sizeof(unsigned char) * (--indice_valores)); fclose(arq); break; } valores = realloc (valores, sizeof(unsigned char) * (++indice_valores)); } while (1);
//- DECLARAÇÃO PARA A TRANSF. DE FOURRIER double complex *valores_transformados; //- VALORES APÓS A TRANSFORMADA DE FOURRIER (CK) valores_transformados = malloc (indice_valores * sizeof(double complex)); double *magnitudes; magnitudes = malloc( indice_valores * sizeof(double)); int *posicao; //- USADO PARA A REORDENAÇÃO DO VETOR POSTERIORMENTE posicao = malloc(indice_valores * sizeof(int));
//- LENDO C [INDICE DO VETOR] A PARTIR DE ZERO
//- O QUE IMPLICA QUE, NA DIVISÃO E NOMEAÇÃO ELE TERÁ QUE SER [INDICE + 1]
//- JÁ QUE CK É ( >= 1 ) for (n=0; n < indice_valores; n++){ for (k=0; k< indice_valores; k++){