完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
函数要实现的功能是:传入四个参数‘A’,‘f’,‘fi’,‘offset’分别控制产生的波形的“幅值”,“频率”,“相位(左右平移)”,“上下平移”。通过计算,产生出特定个(比如:512个)采样点。存入数组(比如sineTable[512])中。
例如: 正弦波公式:A*sin(wt+fi)+offset 产生正弦波的函数: void wave_sin(int A,int f,int fi,int offset) { int t; for(t=0;t sineTable[t]=A*sin(2*3.14*f/SIN_BUFFER_SIZE*t+fi)+offset; } } 锯齿波和三角波的函数有一些问题,希望能给出它们的函数,或者在原基础上更正。不胜感激。 #include #include #define SIN_BUFFER_SIZE 512 int sineTable[SIN_BUFFER_SIZE]; int show[SIN_BUFFER_SIZE]; int temp[SIN_BUFFER_SIZE]; int jcb[SIN_BUFFER_SIZE]; int s***[SIN_BUFFER_SIZE]; extern void wave_sin(int,int,int,int); extern void wave_jcb(int,int,int,int); extern void wshow(int); void wshow(int wave) //最后要用于显示的数组,通过wave变量的值来选择 { int s; switch(wave) { case 0:for(s=0;s<=SIN_BUFFER_SIZE;s++) { show[s]=sineTable[s]; }break; case 1:for(s=0;s<=SIN_BUFFER_SIZE;s++) { show[s]=temp[s]; }break; case 2:for(s=0;s<=SIN_BUFFER_SIZE;s++) { show[s]=jcb[s]; }break; case 3:for(s=0;s<=SIN_BUFFER_SIZE;s++) { show[s]=s***[s]; }break; } } void wave_sin(int A,int f,int fi,int offset) //产生正弦波的以及方波的函数 { int t; for(t=0;t sineTable[t]=A*sin(2*3.14*f/SIN_BUFFER_SIZE*t+fi)+offset; if(sineTable[t]-offset>0) //利用已经产生出的正弦波,通过判断,转化为方波 { temp[t]=offset+A; } if(sineTable[t]-offset<0) { temp[t]=offset-A; } if(sineTable[t]-offset==0) { temp[t]=offset; } } } void wave_jcb(int A,int K,int fi,int offset) //产生锯齿波的函数其中的K与之前的f作用一样,有一点的问题,左右平移实现得不好。 { int p,B,j,i,t; p=SIN_BUFFER_SIZE/K; B=A/p; j=0; while(j t=j*p; for(i=0;t<=(j+1)*p;t++,i++) { jcb[t+fi]=B*i+offset; } j++; } } void wave_s***(int A,int K,int fi,int offset) //产生三角波的函数 问题就在这里,当上下平移的时候波形会失真。左右平移会错误的显示锯齿波。 { int p,B,j,i,t,jia; p=SIN_BUFFER_SIZE/K; jia=p/2; B=A/p; j=0; while(j t=j*p; for(;t<=j*p+jia;t++) { s***[t+fi]=B*(t-j*p)+offset; } for(i=0;t<=(j+1)*p+jia;t++,i++) { s***[t+fi]=s***[jia-i]+offset; } j++; } } |
|
相关推荐
3个回答
|
|
额。。没有人做过这方面的么?
|
|
|
|
程序问题呀。静心研究,一步一步的跟踪一下。
|
|
|
|
您好,首先感谢您的回复。我是感觉我的算法有问题,想问问有没有人有更好更正确个准确的算法来着。就像正弦波那样,用公式来的。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNESP32S3使用指南-IDF版_V1.6》第三十五章 摄像头实验
757 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第三十章 DHT11数字温湿度传感器
728 浏览 0 评论
826 浏览 0 评论
【敏矽微ME32G070开发板免费体验】之原厂2812测试例程解析
1459 浏览 0 评论
1208 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12058 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 08:27 , Processed in 0.590280 second(s), Total 73, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号