Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- #include "complex.h"
- //#define M_PI 3.141592653
- void gen_sig(float *sig, int size);
- void g_sig(struct complex *data, struct complex32 *data32, struct complex16 *data16,int size, const double foff, const double FS);
- int main(){
- const int size = 307200;
- const double FS = 30.72e6;
- const double foff = 200; // 200 Hz
- printf("%d\n", size);
- float sig[size];
- struct complex *data;
- struct complex32 *data32;
- struct complex16 *data16;
- //data = malloc(sizeof(struct complex));
- // data32 = malloc(sizeof(struct complex32));
- //data16 = malloc(sizeof(struct complex16));
- printf("FS: %f\n" ,FS);
- if ((data=malloc(sizeof(struct complex)*(size_t)size))==NULL)
- {
- fprintf(stderr, "Out of memory!\n");
- exit(1);
- }
- if ((data16=malloc(sizeof(struct complex16)*(size_t)size))==NULL)
- {
- fprintf(stderr, "Out of memory!\n");
- exit(1);
- }
- if ((data32=malloc(sizeof(struct complex32)*(size_t)size))==NULL)
- {
- fprintf(stderr, "Out of memory!\n");
- exit(1);
- }
- g_sig(data,data32, data16, size, foff,FS);
- return 0;
- }
- void g_sig(struct complex *data, struct complex32 *data32, struct complex16 *data16,int size, const double foff, const double FS){
- int write = 0;
- // Generating a table got 100 MHz channel
- int cp0 = 160; // First cyclic prefix
- int cp = 144; // Normal cyclic prefix
- int cpe = 512; // Extended cyclic prefix
- int deltaF = 200; //Hz
- int ofdm_size = 2048;
- int j;
- /*for (j=0; j<size;j++){
- data[j].r = 0.0
- data[j].r = 0.0
- data16[j].r = 0.0
- data16[j].r = 0.0
- data32[j].r = 0.0
- data32[j].r = 0.0
- }
- */
- for (int k=0;k<size;k++){
- data[k].r = cos(2*M_PI*foff*(double)k/FS);//Is is Mhz on this line;
- data[k].i = sin(2*M_PI*foff*(double)k/FS);
- //printf("%f\n" ,data[k].r);
- }
- printf("%f\n" ,data[2000].r*(1<<15));
- //printf("%d",(1<<15));
- //Truncate data to fixed-point representation
- // I've used 16 and 32 bits representation,
- for (j=0; j<size;j++){
- data16[j].r = (short)(data[j].r*(1<<15)-1);
- data16[j].i = (short)(data[j].i*(1<<15)-1);
- data32[j].r = (int)(data[j].r*(1<<15)-1);
- data32[j].i = (int)(data[j].i*(1<<15)-1);
- printf("%d\n %d\n", data32[j].r, data32[j].i);
- printf("%hd\n %hd\n", data16[j].r, data16[j].i);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement