Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*============================================================================*/
- /* IF61C - TRABALHO 2 */
- /*----------------------------------------------------------------------------*/
- /* Autor: Gabriela Morikawa, Julia Zimmermann, Lucas Amaral
- /*============================================================================*/
- #include <stdlib.h>
- #include <math.h>
- #include "trabalho2.h"
- /**Esta função altera o ganho de cada amostra de acordo com os valores que foram designados
- *
- *
- * Parâmetros: double* dados: vetor de dados
- * unsigned long n_amostras: número de amostras no vetor
- * double ganho: modificador do ganho
- *
- * Valor de Retorno: nenhum */
- void mudaGanho (double* dados, unsigned long n_amostras, double ganho)
- {
- int cont;
- for (cont=0; cont<n_amostras; cont++) {
- dados[cont]=dados[cont]*ganho;
- }
- }
- /**Esta função insere um ruído (estalo) de 1 ou -1 (alternados) periodicamente de acordo com o valor do intervalo
- *
- *
- * Parâmetros: double* dados: vetor de dados
- * unsigned long n_amostras: número de amostras no vetor
- * unsigned short intervalo: o número de amostras entre dois pontos de ruído é intervalo-1
- *
- * Valor de Retorno: nenhum */
- void ruidoPeriodico (double* dados, unsigned long n_amostras, unsigned short intervalo)
- {
- int cont, estalo=1;
- for (cont=0; cont<n_amostras; cont=cont+intervalo) {
- dados[cont]=estalo;
- estalo=-estalo;
- }
- }
- /**Esta função remove o ruído do áudio, fazendo a mediana dos valores anterior e posterior de cada amostra
- *
- *
- * Parâmetros: double* dados: vetor de dados
- * unsigned long n_amostras: número de amostras no vetor
- *
- * Valor de Retorno: nenhum */
- void removeRuido (double* dados, unsigned long n_amostras)
- {
- double anterior=dados[0],aux,vet_aux[3],meio;
- int cont,i;
- for(cont=1;cont<n_amostras-1;cont++){
- aux=dados[cont];
- vet_aux[0] = anterior;
- vet_aux[1] = dados[cont];
- vet_aux[2] = dados[cont+1];
- if ((vet_aux[0]>=vet_aux[1] && vet_aux[0]<=vet_aux[2]) || (vet_aux[0]<=vet_aux[1] && vet_aux[0]>=vet_aux[2])) {
- meio = vet_aux[0];
- } else if ((vet_aux[1]>=vet_aux[0] && vet_aux[1]<=vet_aux[2]) || (vet_aux[1]<=vet_aux[0] && vet_aux[1]>=vet_aux[2])) {
- meio = vet_aux[1];
- } else {
- meio = vet_aux[2];
- }
- dados[cont] = meio;
- anterior=aux;
- }
- }
- /**Nesta função, a variável n_constantes determina a quantidade de valores do vetor que serão substituídos pelo primeiro valor do grupo (a cada n_constantes)
- *
- *
- * Parâmetros: double* dados: vetor de dados
- * unsigned long n_amostras: número de amostras no vetor
- * unsigned short n_constantes: largura de cada "degrau"
- *
- * Valor de Retorno: nenhum */
- void simulaSubAmostragem (double* dados, unsigned long n_amostras, unsigned short n_constantes)
- {
- int cont, cont2;
- for (cont=0; cont<n_amostras; cont=cont+n_constantes){
- for (cont2=cont; cont2<(cont+n_constantes); cont2++) {
- dados[cont2]=dados[cont];
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement