以經(jīng)驗(yàn)看來(lái)你是要做單片機(jī)方面波形輸出,DAC輸出,或者做模擬示波器什么的。
目前成都創(chuàng)新互聯(lián)已為1000多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、碭山網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
有兩種辦法:
一是查表法,優(yōu)點(diǎn)是計(jì)算量少,占用RAM少,算法簡(jiǎn)單,缺點(diǎn)是占用儲(chǔ)存內(nèi)存較多,參數(shù)比較固定。
查表法的基本思路就是,通過(guò)把sin函數(shù)進(jìn)行采樣,得到的值記錄成一個(gè)表,將表以數(shù)組的形式放在程序中,通過(guò)循環(huán)讀取數(shù)組的值達(dá)到查表的目的。
二是計(jì)算值法,優(yōu)缺點(diǎn)跟查表法恰好相反。
計(jì)算值法的基本思路是通過(guò)特定算法,將特定時(shí)間所需的特定值計(jì)算出來(lái)。
這里給你提供一個(gè)計(jì)算值法的核心代碼,作為指導(dǎo)建議,根據(jù)實(shí)際情況修調(diào)。
double SinWave(double scale,int cycle_time)
{
int a;
double PI = 3.1416;
int resolution_ratio = 100;//分辨率,描述采樣量,越高的分辨率計(jì)算越多
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)
{
//......
}
正弦函數(shù)是三角函數(shù)的一種.
定義:對(duì)于任意一個(gè)實(shí)數(shù)x都對(duì)應(yīng)著唯一的角(弧度制中等于這個(gè)實(shí)數(shù)),而這個(gè)角又對(duì)應(yīng)著唯一確定的正弦值sin x,這樣,對(duì)于任意一個(gè)實(shí)數(shù)x都有唯一確定的值sin x與它對(duì)應(yīng),按照這個(gè)對(duì)應(yīng)法則所建立的函數(shù),表示為f(x)=sin x,叫做正弦函數(shù)。
在C語(yǔ)言當(dāng)中,sin 函數(shù)在標(biāo)準(zhǔn)庫(kù)math.h當(dāng)中。注意其輸入?yún)?shù)單位是弧度,將角度轉(zhuǎn)換為弧度,請(qǐng)將角度乘以 π/180。
功 能: 正弦函數(shù)? ?
用 法: double sin(double x);
例程:
12345678#include?stdio.h?#include?math.h?int?main(void)?{????double?result,?x?=?0.5;????result?=?sin(x);????printf("The?sin()?of?%lf?is?%lf\n",?x,?result);????return?0;?}
如何在C語(yǔ)言中解決正弦或余弦函數(shù)的表示方法我是一個(gè)?頭文件包含。math.h
cos :余弦函數(shù)
函數(shù)原型:double cos(double x);
頭文件:#includemath.h
是否是標(biāo)準(zhǔn)函數(shù):是
函數(shù)功能:求x的余弦值,這里,x為弧度。
返回值:計(jì)算結(jié)果的雙精度值。
例程如下: 求cosx。
#include stdio.h
#include math.h
int main(void)
{
double result;
double x = M_PI。
C語(yǔ)言里sin函數(shù)和cos函數(shù)是C標(biāo)準(zhǔn)數(shù)學(xué)函數(shù)庫(kù)中的函數(shù),調(diào)用需要引入math.h頭文件。
一、sin()?函數(shù)描述:
C 庫(kù)函數(shù) double sin(double x) 返回弧度角 x 的正弦。sin() 函數(shù)的聲明:double sin(double x)。
參數(shù):x -- 浮點(diǎn)值,代表了一個(gè)以弧度表示的角度。
返回值:該函數(shù)返回 x 的正弦。
二、cos() 函數(shù)描述:
cos() 函數(shù)的功能是求某個(gè)角的余弦值。cos()?函數(shù)的聲明:double cos(double x)。
參數(shù):x -- 浮點(diǎn)值,代表了一個(gè)以弧度表示的角度。
返回值:該函數(shù)返回 x 的余弦。
擴(kuò)展資料:
相關(guān)的三角函數(shù):
double asin (double); 結(jié)果介于[-PI/2,PI/2]
double acos (double); 結(jié)果介于[0,PI]
double atan (double); 反正切(主值),結(jié)果介于[-PI/2,PI/2]
double atan2 (double,double); 反正切(整圓值),結(jié)果介于[-PI,PI]
參考資料來(lái)源:百度百科-math.h
1、C語(yǔ)言中要編寫(xiě)sin函數(shù),實(shí)質(zhì)上要利用sin的泰勒公式,然后根據(jù)泰勒公式,將其中的每一項(xiàng)進(jìn)行分解,最后用循環(huán),累加計(jì)算出最終結(jié)果。
2、下面用for循環(huán)實(shí)現(xiàn)sin的算法,程序代碼如下:
#includestdio.h
#includemath.h
void?main()
{
int??i;
float??x,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;????//累加一項(xiàng)
a=a*x*x;?????//求下一項(xiàng)分子
b=b*2*i*(2*i+1);???//求下一項(xiàng)分母
s*=-1;
}
printf("sum=%f\n",sum);
}
3、? 關(guān)于上述程序的幾點(diǎn)說(shuō)明:上述程序的計(jì)算結(jié)果精確到小數(shù)點(diǎn)后六位;上述程序運(yùn)用了sin的泰勒展開(kāi)式 sin x=x-x^3/3!+x^5/5! ...... ,程序中將sin泰勒公式中的每一項(xiàng)拆成了分子,分母以及每一項(xiàng)前的符號(hào)這三項(xiàng),以便于每一項(xiàng)的累加。
C語(yǔ)言是一門(mén)通用計(jì)算機(jī)編程語(yǔ)言,應(yīng)用廣泛。C語(yǔ)言的設(shè)計(jì)目標(biāo)是提供一種能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器、產(chǎn)生少量的機(jī)器碼以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的編程語(yǔ)言。
盡管C語(yǔ)言提供了許多低級(jí)處理的功能,但仍然保持著良好跨平臺(tái)的特性,以一個(gè)標(biāo)準(zhǔn)規(guī)格寫(xiě)出的C語(yǔ)言程序可在許多電腦平臺(tái)上進(jìn)行編譯,甚至包含一些嵌入式處理器(單片機(jī)或稱MCU)以及超級(jí)電腦等作業(yè)平臺(tái)。
二十世紀(jì)八十年代,為了避免各開(kāi)發(fā)廠商用的C語(yǔ)言語(yǔ)法產(chǎn)生差異,由美國(guó)國(guó)家標(biāo)準(zhǔn)局為C語(yǔ)言制定了一套完整的美國(guó)國(guó)家標(biāo)準(zhǔn)語(yǔ)法,稱為ANSI C,作為C語(yǔ)言最初的標(biāo)準(zhǔn)。目前2011年12月8日,國(guó)際標(biāo)準(zhǔn)化組織(ISO)和國(guó)際電工委員會(huì)(IEC)發(fā)布的C11標(biāo)準(zhǔn)是C語(yǔ)言的第三個(gè)官方標(biāo)準(zhǔn),也是C語(yǔ)言的最新標(biāo)準(zhǔn),該標(biāo)準(zhǔn)更好的支持了漢字函數(shù)名和漢字標(biāo)識(shí)符,一定程度上實(shí)現(xiàn)了漢字編程。
C語(yǔ)言sin()用來(lái)計(jì)算參數(shù)x 的正玄值,然后將結(jié)果返回。返回-1 至1 之間的計(jì)算結(jié)果。
例子:
#include math.h
main(){
double answer = sin(0.5);
printf("sin(0.5) = %f\n", answer);
}
執(zhí)行
sin(0.5) = 0.479426
C語(yǔ)言sin():
sin()原型:double sin(double x)
sin()角度與弧度:
π=180°
1°=π/180
1(rad)=180/π
角度轉(zhuǎn)弧度:用角度乘以π/180
弧度轉(zhuǎn)角度:用弧度乘以180/π,或者用rtod()函數(shù)
擴(kuò)展資料:
與sin相似的acos函數(shù)
函數(shù)名: acos
功 能:計(jì)算并返回arccos(x)值、要求-1=X=1
函數(shù)與形參類型:
double acos(x)
double x;
程序例:
#include stdio.h
#include math.h int main(void)
{
double result;
double x = 0.5; result = acos(x);
printf("The arc cosine of %lf is %lf\n", x, result);
return 0;
}
參考資料:CSDN博客頻道-C語(yǔ)言中sin和cos的用法