c语言正弦信号生成函数 c语言正弦余弦函数

正弦波产生C语言源程序代码以经验看来你是要做单片机方面波形输出,DAC输出,或者做模拟示波器什么的 。
有两种办法:
一是查表法,优点是计算量少,占用RAM少,算法简单 , 缺点是占用储存内存较多 , 参数比较固定 。
查表法的基本思路就是,通过把sin函数进行采样,得到的值记录成一个表,将表以数组的形式放在程序中,通过循环读取数组的值达到查表的目的 。
二是计算值法 , 优缺点跟查表法恰好相反 。
计算值法的基本思路是通过特定算法,将特定时间所需的特定值计算出来 。
这里给你提供一个计算值法的核心代码,作为指导建议,根据实际情况修调 。
double SinWave(double scale,int cycle_time)
{
int a;
double PI = 3.1416;
int resolution_ratio = 100;//分辨率,描述采样量,越高的分辨率计算越多
for(a=0;aresolution_ratio;a)
{
DAC_OUT(scale * sin(2*PI*a/resolution_ratio));
delay(cycle_time/resolution_ratio);
}
}
void delay(int us)
{
//......
}
void DAC_OUT(int data)
{
//......
}
怎样用c语言编写一个程序用来输出正弦函数值首先:程序应该这样改!
#include
#include
main()
{
double
n;
double
b,c;
scanf("%lf",n);
b=sin(n);
c=cos(n);
printf("%.2lf\n%.2lf",b,c);
return
0;
}
其次 , 这里的n是弧度值,你说的90度应该输入的是pi/2,而不是90 , 如果希望输入90的话,那就这样改!
#include
#include
main()
{
int
s;
double
n,b,c;
scanf("%d",s);
n=3.1415926*(s/180.0);
b=sin(n);
c=cos(n);
printf("%.2lf\n%.2lf",b,c);
return
0;
}
用C语言生成一个频率是160HZ,峰值是45,相位是45度的正弦波?输出 y = H* sin( 2*pi*f*t45.0/180.0*pi)的信号即可 。
下面程序产生 360个点 。
#include stdio.h
#include math.h
int main () {
double f=160.0;
double h=45.0,om;
double phase=45.0; //degrees
double pi;
double t,dt;
double s[360];//存放生成的信号
int i;
pi = 4.0*atan(1.0);//圆周率
om = 2.0*pi*f;//圆频率
phase = 45.0/180.0*pi;//相位
printf("pi=%f om=%f phase=%f\n",pi,om,phase);
dt = 0.00002;//时间步长
for (i=0;i360;i) s[i]= h * sin(om * dt * iphase);
for (i=0;i360;i) {printf("%8.3f ",s[i]);if (i%5==0) printf("\n");};
return 0;
}
请问用C语言怎么编写程序产生一个正弦波#includestdio.h
#include stdlib.h
#includemath.h
#define FQ 1000
#define AM 1000
#define PI 3.14
int main()
{
FILE *stream;
int i=0,j=0;
double value=https://www.04ip.com/post/0,bb=0;
short gg[1000];
stream=fopen("sine_wave.raw","wb");
value=https://www.04ip.com/post/(2*PI/8);
【c语言正弦信号生成函数 c语言正弦余弦函数】for(i=0;i1000;i)
{
bb=AM*sin(value*i);
gg[i]=(short)bb;
//fprintf(stream,"%d/n",gg);
}
fwrite(gg, 2, 1000,stream);
fclose(stream);
return;
}
如何用c语言的数组来实现一个正弦函数1、C语言中要编写sin函数 , 实质上要利用sin的泰勒公式 , 然后根据泰勒公式,将其中的每一项进行分解,最后用循环,累加计算出最终结果 。
2、下面用for循环实现sin的算法,程序代码如下:
#includestdio.h#includemath.hvoid main(){ inti; floatx,sum,a,b;//sum代表和,a为分子,b为分母 char s; printf("please input x"); scanf("%f",x); s=1; sum=0; a=x;//分母赋初值 b=1;//分子赋初值 for(i=1;a/b=1e-6;i) {sum=sum s*a/b;//累加一项a=a*x*x;//求下一项分子b=b*2*i*(2*i 1);//求下一项分母s*=-1; }printf("sum=%f\n",sum);}
3、关于上述程序的几点说明:上述程序的计算结果精确到小数点后六位;上述程序运用了sin的泰勒展开式 sin x=x-x^3/3! x^5/5! ......,程序中将sin泰勒公式中的每一项拆成了分子,分母以及每一项前的符号这三项 , 以便于每一项的累加 。
关于c语言正弦信号生成函数和c语言正弦余弦函数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读