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 }
sin_pro.c

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-06-02
  • 2022-12-23
  • 2022-01-21
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-04-22
  • 2022-12-23
  • 2021-09-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案