Programa en C
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define LEN 1024 //numero de muestras tomadas
int multiplica(double *,double *);
int genera(double *,double *);
int main(void){ //funcion main que llama a las demas
int d;
double sin_rf[LEN]; //señal de alta frecuencia - Portadora
double sin_lo[LEN]; //señal de baja frecuencia - Moduladora
genera(sin_rf,sin_lo);
multiplica(sin_rf,sin_lo);
printf("terminado...\n");
scanf("%d",&d);
return 0;
}
//genera los valores de dos ondas senoidales de frecuencias muy diferentes
int genera(double * sin_rf, double * sin_lo){
int i;
float rad;
rad=3.141592654/180; //conversion a radian
for(i=0;i<=LEN-1;i++){
sin_rf[i]=sin(rad*i*100);
sin_lo[i]=sin(rad*i*3);
}
}
//Multiplica ambas senoidales y las imprime junto a originales
int multiplica(double * sin_rf, double * sin_lo){
double rad;
int i,j;
double res[LEN];
FILE *frf,*flo,*fo;
frf=fopen("sin_rf.txt","w");
flo=fopen("sin_lo.txt","w");
for(i=0;i<=LEN-1;i++){
fprintf(frf,"%f\n",sin_rf[i]); //originales
fprintf(flo,"%f\n",sin_lo[i]);
}
fclose(frf);
fclose(flo);
fo=fopen("salida.txt","w");
for(j=0;j<=LEN-1;j++){
res[j]=(sin_rf[j])*(sin_lo[j]); //mezcla
fprintf(fo,"%f\n",res[j]);printf("w");
}
fclose(fo);
return 0;
}