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