tft每日頭條

 > 科技

 > c語言三個數平均值的函數代碼

c語言三個數平均值的函數代碼

科技 更新时间:2024-12-28 01:03:20
基本概念

在軟件設計中,經常碰到要求産生一個等差或等比的向量數組,如在數字信号處理領域,要求在[x1~x2]之間按線性(本質是等差數組)或對數(本質是等比數組)分布産生N個頻點的數組,對于這種問題,在Matlab中提供了兩個現成的函數,分别為linspace和logsapce,函數原型說明如下:

1、y = linspace(x1,x2,n),功能是産生x1,x2之間的n點行線性向量數組,其中x1、x2、n分别為起始值、終止值、元素個數。

2、y=logspace(a, b, n),功能是産生從10的a次方到10的b次方之間按對數等分的n個元素的行向量數組。

在C/C 語言的标準庫中沒有現在的函數實現,下面給出具體的實現思路及代碼。

linspace函數的實現

對于在x1,x2之間按線性分布産生n個點的等差數組linspace函數,其實現方法較為簡單,思路:第i個點的公式表示為:y[i]=x1 i*d,其中,i範圍為[0~n-1],d為元素之間的間隔:d= (x2-x1)/(n-1)。C/C 語言具體實現代碼如下:

c語言三個數平均值的函數代碼(CC語言編程系列007)1

在上面代碼中,産生的等差向量數組放在指針y對應的數組中。

logspace函數的實現

對于在10的a次方到10的b次方之間按對數分布産生n個點的等比數組logspace函數,其實現稍微複雜些。先求公比q的值為:10的((b-a)/n-1)次方,則第i個點的公式表示為:

c語言三個數平均值的函數代碼(CC語言編程系列007)2

其中,i範圍為[0~n-1]。C/C 語言具體實現代碼如下:

c語言三個數平均值的函數代碼(CC語言編程系列007)3

在上面代碼中,産生的等比向量數組放在指針y對應的數組中。

代碼測試例子

調用上面2個函數,測試代碼如下:

c語言三個數平均值的函數代碼(CC語言編程系列007)4

需要說明的是,代碼中對于logspace函數的驗證,要求在0.0001到100000之間産生對數分布,所以對應的a和b的值分别為log10(0.0001)和log10(100000)。

運行結果如下:

c語言三個數平均值的函數代碼(CC語言編程系列007)5

結論引申

上面代碼完美實現了matlab中兩個對應函數的功能。

對于logspace函數,可以再進一步引申,上面代碼實現中是以10為底的對數分布,當然也可以産生以任意數值為底的對數分布數組,隻需對上面的代碼稍微改造下就可實現這個功能,代碼如下:

c語言三個數平均值的函數代碼(CC語言編程系列007)6

如以2為底,在1到512之間産生對數分布數組為:[1,2,4,8,16,32,64,128,256,512]。

大家如果有更好的實現方法,可加關注留言讨論。

歡迎加關注,共同交流。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved