1:正弦波
用函数 sin (x * π/180°)
1 /************************************************** 2 3 正弦波 mif 生成 4 5 ***************************************************/ 6 #include <stdio.h> 7 #include <math.h> 8 9 #define DEPTH 128 /*数据深度,即存储单元的个数,可更改*/ 10 #define WIDTH 8 /*存储单元的宽度,可更改*/ 11 #define PI 3.141592 12 13 int main(void) 14 { 15 int i,temp; 16 float s; 17 18 FILE *fp; 19 fp = fopen("SinPro.mif","w"); /*可更改,但扩展名必须为.mif*/ 20 if(NULL == fp) 21 printf("Can not creat file!\r\n"); 22 else 23 { 24 printf("File created successfully!\n"); 25 /* 26 * 生成文件头:注意不要忘了“;” 27 */ 28 fprintf (fp, "DEPTH = %d;\n",DEPTH); 29 fprintf (fp, "WIDTH = %d;\n",WIDTH); 30 fprintf (fp, "ADDRESS_RADIX = HEX;\n"); 31 fprintf (fp, "DATA_RADIX = HEX;\n"); 32 fprintf (fp, "CONTENT\n"); 33 fprintf (fp, "BEGIN\n"); 34 35 /* 36 * 以十六进制输出地址和数据 37 */ 38 for(i = 0; i < DEPTH; i++) 39 { 40 /*周期为128个点的正弦波*/ 41 s = sin( PI * i * 2 / DEPTH); // sin (x * π/180°) 取值范围-1至1,注意 sin() 函数是 double 类型 42 43 /*将-1~1之间的正弦波的值扩展到0-255之间*/ 44 temp = (int)( (s+1) * pow(2, WIDTH - 1) ); //正弦值扩展到 0 至 2 的 WIDTH次幂,注意 pow() 函数是 double 类型 45 46 /*以十六进制输出地址和数据*/ 47 fprintf (fp, "%x \t : \t %x;\n", i, temp); 48 }//end for 49 50 fprintf (fp, "END;\n"); 51 fclose (fp); 52 } 53 }