一種基于fpga的n階數(shù)據(jù)擬合方法及n階數(shù)據(jù)擬合器的制造方法
【專利摘要】本發(fā)明涉及一種基于FPGA的N階數(shù)據(jù)擬合方法及N階數(shù)據(jù)擬合器,所述N階數(shù)據(jù)擬合方法,包括:步驟S100,定義兩個一維數(shù)組;步驟S200,對兩個一維數(shù)組中的存放信號分別初始化;步驟S300,根據(jù)兩個一維數(shù)組計算出N階矩陣;步驟S400,通過N階矩陣計算出擬合系數(shù)。本發(fā)明實現(xiàn)了N階數(shù)據(jù)擬合系數(shù)的求解,并且獲得了擬合曲線,該擬合曲線具有擬合成功率高、精確度高的優(yōu)點。
【專利說明】—種基于FPGA的N階數(shù)據(jù)擬合方法及N階數(shù)據(jù)擬合器
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于數(shù)據(jù)處理領(lǐng)域,尤其涉及一種基于FPGA的N階數(shù)據(jù)擬合方法及N階數(shù)據(jù)擬合器。
【背景技術(shù)】
[0002]隨著電子科學(xué)技術(shù)的飛速發(fā)展,現(xiàn)代電子產(chǎn)品幾乎滲透到社會的各個領(lǐng)域,有力地推動了社會生產(chǎn)力的發(fā)展和社會信息化程度的提高。尤其是FPGA的出現(xiàn),給數(shù)字系統(tǒng)的設(shè)計帶來了很大的靈活性,傳統(tǒng)的數(shù)字系統(tǒng)設(shè)計只能對電路板進行設(shè)計,通過設(shè)計及制作硬件電路來實現(xiàn)系統(tǒng)功能,而新的設(shè)計方法利用EDA工具,采用可編程器件,通過軟件程序設(shè)計芯片來實現(xiàn)系統(tǒng)功能,以軟件代替硬件。這樣不僅可以通過芯片設(shè)計來實現(xiàn)多種數(shù)字邏輯系統(tǒng)功能,而且由于管腳定義的靈活性,大大減輕了電路設(shè)計和電路板設(shè)計的工作量和難度,從而有效地增強了設(shè)計。
[0003]在各個領(lǐng)域的實驗中,實驗和勘測常常會產(chǎn)生大量的數(shù)據(jù)。當然,想要知其變化的規(guī)律,就需要對這些測量數(shù)據(jù)進行曲線擬合。曲線擬合,俗稱拉曲線,是一種把現(xiàn)有數(shù)據(jù)透過數(shù)學(xué)方法來代入一條數(shù)式的表示方式??茖W(xué)和工程問題可以通過諸如采樣、實驗等方法獲得若干離散的數(shù)據(jù),根據(jù)這些數(shù)據(jù),人們往往希望得到一個連續(xù)的函數(shù)(也就是曲線)或者更加密集的離散方程與已知數(shù)據(jù)相吻合,這過程就叫做數(shù)據(jù)擬合。數(shù)據(jù)擬合與數(shù)據(jù)插值的概念不同,它所處理的數(shù)據(jù)量大而且不能保證每一個數(shù)據(jù)點都沒有誤差,所以要求某一個擬合得到的函數(shù)嚴格通過每一個數(shù)據(jù)點是不合理的,而插值函數(shù)則必須通過每一個數(shù)據(jù)點。在實際問題中,通過觀測數(shù)據(jù)能否正確揭示某些變量之間的關(guān)系,進而正確認識事物的內(nèi)在規(guī)律和本質(zhì)屬性,所以采用數(shù)據(jù)擬合更加有現(xiàn)實意義,人們對其研究也在不斷的深入。
[0004]現(xiàn)在,對實驗數(shù)據(jù)值進行函數(shù)擬合觀測其變化規(guī)律以獲得信息模型是許多工程領(lǐng)域的一個核心問題。此外,為了適應(yīng)這個多元化的世界中,為了滿足各種各樣的應(yīng)用領(lǐng)域的要求,針對各種擬合方法的改進和研究也從未停止過。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的是提供一種基于FPGA的N階數(shù)據(jù)擬合方法,以解決對N階擬合系數(shù)求解的技術(shù)問題。
[0006]為了解決上述技術(shù)問題,本發(fā)明提供了一種基于FPGA的N階數(shù)據(jù)擬合方法,包括如下步驟:
步驟S100,定義兩個一維數(shù)組。
[0007]步驟S200,對兩個一維數(shù)組中的存放信號分別初始化。
[0008]步驟S300,根據(jù)兩個一維數(shù)組計算出N階矩陣。
[0009]步驟S400,通過N階矩陣計算出擬合系數(shù)。
[0010]優(yōu)選的,所述步驟SlOO中定義兩個一維數(shù)組的方法包括:對兩個一維數(shù)組X和Y分別進行定義,同時還定義用于在N階矩陣中各元素暫時存放的若干中間信號。
[0011]優(yōu)選的,所述步驟S200中對一維數(shù)組中的信號初始化的方法包括:對用于在N階矩陣中的存放信號的元素賦予初始值,以及對兩個一維數(shù)組中的X和Y中的各元素賦予一定的數(shù)值。
[0012]優(yōu)選的,所述步驟S300中根據(jù)兩個一維數(shù)組計算出N階矩陣的方法包括:根據(jù)所述兩個一維數(shù)組X和Y計算出N階矩陣中的各元素,以獲得N階矩陣,即將所述兩個一維數(shù)組X和Y的計算結(jié)果分別賦于相應(yīng)中間信號。
[0013]優(yōu)選的,所述步驟S400中通過N階矩陣計算出擬合系數(shù)的方法包括:所述N階矩陣通過除法計算出擬合系數(shù)。
[0014]優(yōu)選的,所述數(shù)據(jù)擬合方法還包括:步驟S500,根據(jù)擬合系數(shù)通過最小二乘法獲得N階數(shù)據(jù)擬合曲線。
[0015]優(yōu)選的,所述數(shù)據(jù)擬合方法還包括:步驟S600,對獲得的擬合曲線進行仿真測試,以檢測擬合的精確度。
[0016]優(yōu)選的,所述N階數(shù)據(jù)擬合為一階數(shù)據(jù)擬合,該一階數(shù)據(jù)擬合的方法,即
所述步驟SlOO中定義用于在一階矩陣中各元素暫時存放的若干中間信號;以及所述步驟S200中信號初始化的方法包括:步驟S210,設(shè)置二階矩陣,并對用于存放該二階矩陣中的元素進行賦予初始值;步驟S220,對兩個一維數(shù)組中的X的Y中的8個元素賦予一定的數(shù)值;且所述步驟S300獲得一階矩陣,以及所述步驟S400為一階矩陣通過除法計算出擬合系數(shù)。
[0017]優(yōu)選的,所述N階數(shù)據(jù)擬合為二階數(shù)據(jù)擬合,該二階數(shù)據(jù)擬合的方法,即所述步驟SlOO中定義用于在二階矩陣中各元素暫時存放的若干中間信號;以及所述步驟S200中信號初始化的方法包括:步驟S210’,設(shè)置三階矩陣,并對用于存放該三階矩陣中的元素進行賦予初始值;步驟S220’,對兩個一維數(shù)組中的X和Y中的6個元素賦予一定的數(shù)值;且所述步驟S300獲得二階矩陣,以及所述步驟S400為二階矩陣通過除法計算出擬合系數(shù)。
[0018]又一方面,本發(fā)明還提供了一種基于FPGA的N階數(shù)據(jù)擬合器,以解決N階數(shù)據(jù)進行擬合的技術(shù)問題。
[0019]為了解決上述技術(shù)問題,一種基于FPGA的N階數(shù)據(jù)擬合器,包括:
端口定義模塊,用于定義信號輸入、輸出端口 ;定義數(shù)組模塊,用于定義兩個一維數(shù)組;N階矩陣計算模塊,用于根據(jù)兩個一維數(shù)組計算出N階矩陣;擬合系數(shù)計算模塊,通過N階矩陣計算出擬合系數(shù)。
[0020]本發(fā)明的有益效果是,本發(fā)明實現(xiàn)了 N階數(shù)據(jù)擬合系數(shù)的求解,并且獲得了擬合曲線,該擬合曲線具有擬合成功率高、精確度高的優(yōu)點。
【專利附圖】
【附圖說明】
[0021]下面結(jié)合附圖和實施例對本發(fā)明進一步說明。
[0022]圖1示出了本發(fā)明的N階數(shù)據(jù)擬合方法的流程圖;
圖2示出了一階數(shù)據(jù)擬合方法的流程圖;
圖3示出了二階數(shù)據(jù)擬合方法的流程圖;
圖4示出了基于FPGA的N階數(shù)據(jù)擬合器的原理框圖。
【具體實施方式】
[0023]現(xiàn)在結(jié)合附圖對本發(fā)明作進一步詳細的說明。這些附圖均為簡化的示意圖,僅以示意方式說明本發(fā)明的基本結(jié)構(gòu),因此其僅顯示與本發(fā)明有關(guān)的構(gòu)成。
[0024]實施例1
圖1示出了本發(fā)明的N階數(shù)據(jù)擬合方法的流程圖。
[0025]如圖1所示,一種基于FPGA的N階數(shù)據(jù)擬合方法,包括如下步驟:
步驟S100,定義兩個一維數(shù)組。
[0026]步驟S200,對兩個一維數(shù)組中的存放信號分別初始化。
[0027]步驟S300,根據(jù)兩個一維數(shù)組計算出N階矩陣。
[0028]步驟S400,通過N階矩陣計算出擬合系數(shù)。
[0029]其中,所述步驟SlOO中定義兩個一維數(shù)組的方法包括:對兩個一維數(shù)組X和Y分別進行定義,同時還定義用于在N階矩陣中各元素暫時存放的若干中間信號??蛇x的,所述一維數(shù)組X可表示為溫度數(shù)據(jù),一維數(shù)組Y可表示為電壓數(shù)據(jù)。
[0030]所述步驟S200中對一維數(shù)組中的信號初始化的方法包括:對用于在N階矩陣中的存放信號的元素賦予初始值,以及對兩個一維數(shù)組中的X和Y中的各元素賦予一定的數(shù)值。
[0031]所述步驟S300中根據(jù)兩個一維數(shù)組計算出N階矩陣的方法包括:根據(jù)所述兩個一維數(shù)組X和Y計算出N階矩陣中的各元素,以獲得N階矩陣,即將所述兩個一維數(shù)組X和Y的計算結(jié)果分別賦于相應(yīng)中間信號。具體的,中間信號可用于存放一維數(shù)組中各元素的求和值。
[0032]所述步驟S400中通過N階矩陣計算出擬合系數(shù)的方法包括:所述N階矩陣通過除法計算出擬合系數(shù)。
[0033]所述數(shù)據(jù)擬合方法還包括:步驟S500,根據(jù)擬合系數(shù)通過最小二乘法獲得N階數(shù)據(jù)擬合曲線。
[0034]所述數(shù)據(jù)擬合方法還包括:步驟S600,對獲得的擬合曲線進行仿真測試。
[0035]實施例2
圖2示出了一階數(shù)據(jù)擬合方法的流程圖。
[0036]本實施例是在實施例1基礎(chǔ)上,實現(xiàn)一階數(shù)據(jù)擬合的【具體實施方式】。
[0037]所述N階數(shù)據(jù)擬合為一階數(shù)據(jù)擬合,該一階數(shù)據(jù)擬合的方法包括:
所述步驟S110,定義用于在一階矩陣中各元素暫時存放的若干中間信號;以及所述步驟S200中信號初始化的方法包括:
步驟S210,設(shè)置二階矩陣,并對用于存放該二階矩陣中的元素進行賦予初始值。
[0038]步驟S220,對一維數(shù)組中的X、Y中的8個元素賦予一定的數(shù)值。
[0039]且所述步驟S310獲得一階矩陣,以及所述步驟S410為一階矩陣通過除法計算出擬合系數(shù)。
[0040]具體實施步驟包括:
步驟(一),定義輸入輸出端口:這個部分是在程序的實體中定義輸入端口 elk,rst為STD_L0GIC 類型,輸出端口 a,b 為 STD_L0GIC_VECT0R 類型。
步驟(二),定義兩個一維數(shù)組以及中間變量:這個模塊的作用就是對一維數(shù)組X和Y進行相應(yīng)的定義,并且定義了用于在二階矩陣中各元素暫時存放的一些中間信號;以及信號初始化:對設(shè)置的用于存放二階矩陣中的元素信號進行賦予初始值以及對一位數(shù)組XY中的8個元素賦予一定的數(shù)值。初始化有效的避免了出現(xiàn)仿真出錯,沒有輸出結(jié)果的問題。
[0041]步驟(三),計算二階矩陣模塊:這個模塊利用VHDL語言中乘法,加減法和強制類型轉(zhuǎn)化函數(shù)conv_integer等計算矩陣方程中的各個矩陣元素,并將計算的結(jié)果賦給定義好中間信號,且在信號定義時,位數(shù)應(yīng)匹配。
[0042]步驟(四),除法程序模塊:該模塊利用減法的原理實現(xiàn)了 14位有符號整數(shù)的除法,在主程序中調(diào)用此模塊,實現(xiàn)了擬合系數(shù)的求解。
[0043]步驟(五),測試程序模塊:該模塊主要用于對主程序的仿真測試,簡化了主程序的測試信號數(shù),并且對時鐘信號elk和使能信號rst進行了參數(shù)設(shè)置。
[0044]實施例3
圖3示出了二階數(shù)據(jù)擬合方法的流程圖。
[0045]本實施例是在實施例1基礎(chǔ)上,實現(xiàn)二階數(shù)據(jù)擬合的【具體實施方式】。
[0046]所述N階數(shù)據(jù)擬合為二階數(shù)據(jù)擬合,該二階數(shù)據(jù)擬合的方法包括:
所述步驟S110’,定義用于在二階矩陣中各元素暫時存放的若干中間信號;以及所述步驟S200中信號初始化的方法包括:
步驟S210’,設(shè)置三階矩陣,并對用于存放該三階矩陣中的元素進行賦予初始值。
[0047]步驟S220’,對一維數(shù)組中的X、Y中的6個元素賦予一定的數(shù)值。
[0048]且所述步驟S310’,獲得二階矩陣,以及所述步驟S410’,為二階矩陣通過除法計算出擬合系數(shù)。
[0049]具體實施步驟包括:
步驟(一),定義輸入輸出端口:這個部分主要就是在主程序的實體中定義輸入端口 elk,rst 為 STD_L0GIC 類型,輸出端口 a2,al, a0 為 STD_LOGIC_VECTOR 類型。
步驟(二),定義一維數(shù)組及中間變量和對信號的初始化:這兩個部分作用跟一階數(shù)據(jù)擬合相同,區(qū)別在于定義的信號數(shù)量以及一維數(shù)組X和Y中的元素個數(shù)不一樣,二階中設(shè)置的XY為6個元素。
[0050]步驟(三),計算三階矩陣及其求逆模塊:這個模塊利用VHDL語言中乘法,加減法等計算三階矩陣方程中的各個矩陣元素,并將計算的結(jié)果賦給定義好中間信號,并且注意信號定義時位數(shù)的匹配,然后利用伴隨矩陣求原三階矩陣的逆矩陣,在此過程中,還需調(diào)用除法模塊實現(xiàn)最后系數(shù)結(jié)果的結(jié)算。
[0051]步驟(四),除法程序模塊:該模塊利用減法的原理實現(xiàn)了 99位有符號整數(shù)的除法,在主程序中調(diào)用此模塊,實現(xiàn)三階逆矩陣的求解和計算擬合系數(shù)的公式。
[0052]步驟(五),測試程序模塊:該模塊主要用于對主程序的仿真測試,簡化了主程序的測試信號數(shù),并且對時鐘信號elk和使能信號rst進行了參數(shù)設(shè)置。
[0053]實施例4
圖4示出了基于FPGA的N階數(shù)據(jù)擬合器的原理框圖。
[0054]在上述實施例1至3的基礎(chǔ)上,一種基于FPGA的N階數(shù)據(jù)擬合器,包括:端口定義模塊,用于定義信號輸入、輸出端口 ;定義數(shù)組模塊,用于定義兩個一維數(shù)組;N階矩陣計算模塊,用于根據(jù)兩個一維數(shù)組計算出N階矩陣;擬合系數(shù)計算模塊,通過N階矩陣計算出擬合系數(shù)。
[0055]以上述依據(jù)本發(fā)明的理想實施例為啟示,通過上述的說明內(nèi)容,相關(guān)工作人員完全可以在不偏離本項發(fā)明技術(shù)思想的范圍內(nèi),進行多樣的變更以及修改。本項發(fā)明的技術(shù)性范圍并不局限于說明書上的內(nèi)容,必須要根據(jù)權(quán)利要求范圍來確定其技術(shù)性范圍。
【權(quán)利要求】
1.一種基于FPGA的N階數(shù)據(jù)擬合方法,包括如下步驟: 步驟S100,定義兩個一維數(shù)組; 步驟S200,對兩個一維數(shù)組中的存放信號分別初始化; 步驟S300,根據(jù)兩個一維數(shù)組計算出N階矩陣; 步驟S400,通過N階矩陣計算出擬合系數(shù)。
2.根據(jù)權(quán)利要求1所述的基于FPGA的N階數(shù)據(jù)擬合方法,其特征在于,所述步驟SlOO中定義兩個一維數(shù)組的方法包括: 對兩個一維數(shù)組X和Y分別進行定義,同時還定義用于在N階矩陣中各元素暫時存放的若干中間信號。
3.根據(jù)權(quán)利要求2所述的基于FPGA的N階數(shù)據(jù)擬合方法,其特征在于,所述步驟S200中對一維數(shù)組中的信號初始化的方法包括:對用于在N階矩陣中的存放信號的元素賦予初始值,以及對兩個一維數(shù)組中的X和Y中的各元素賦予一定的數(shù)值。
4.根據(jù)權(quán)利要求3所述的基于FPGA的N階數(shù)據(jù)擬合方法,其特征在于,所述步驟S300中根據(jù)兩個一維數(shù)組計算出N階矩陣的方法包括: 根據(jù)所述兩個一維數(shù)組X和Y計算出N階矩陣中的各元素,以獲得N階矩陣,即將所述兩個一維數(shù)組X和Y的計算結(jié)果分別賦于相應(yīng)中間信號。
5.根據(jù)權(quán)利要求4所述的基于FPGA的N階數(shù)據(jù)擬合方法,其特征在于,所述步驟S400中通過N階矩陣計算出擬合系數(shù)的方法包括:所述N階矩陣通過除法計算出擬合系數(shù)。
6.根據(jù)權(quán)利要求1或5所述的基于FPGA的N階數(shù)據(jù)擬合方法,其特征在于,所述N階數(shù)據(jù)擬合方法還包括: 步驟S500,根據(jù)擬合系數(shù)通過最小二乘法獲得N階數(shù)據(jù)擬合曲線。
7.根據(jù)權(quán)利要求6所述的基于FPGA的N階數(shù)據(jù)擬合方法,其特征在于,所述數(shù)據(jù)擬合方法還包括: 步驟S600,對獲得的擬合曲線進行仿真測試。
8.根據(jù)權(quán)利要求5所述的基于FPGA的N階數(shù)據(jù)擬合方法,其特征在于,所述N階數(shù)據(jù)擬合為一階數(shù)據(jù)擬合,該一階數(shù)據(jù)擬合的方法,即 所述步驟SlOO中定義用于在一階矩陣中各元素暫時存放的若干中間信號;以及 所述步驟S200中信號初始化的方法包括: 步驟S210,設(shè)置二階矩陣,并對用于存放該二階矩陣中的元素進行賦予初始值; 步驟S220,對兩個一維數(shù)組中的X的Y中的8個元素賦予一定的數(shù)值; 且所述步驟S300獲得一階矩陣,以及 所述步驟S400為一階矩陣通過除法計算出擬合系數(shù)。
9.根據(jù)權(quán)利要求5所述的基于FPGA的N階數(shù)據(jù)擬合方法,其特征在于,所述N階數(shù)據(jù)擬合為二階數(shù)據(jù)擬合,該二階數(shù)據(jù)擬合的方法,即 所述步驟SlOO中定義用于在二階矩陣中各元素暫時存放的若干中間信號;以及 所述步驟S200中信號初始化的方法包括: 步驟S210’,設(shè)置三階矩陣,并對用于存放該三階矩陣中的元素進行賦予初始值; 步驟S220’,對兩個一維數(shù)組中的X和Y中的6個元素賦予一定的數(shù)值; 且所述步驟S300獲得二階矩陣,以及所述步驟S400為二階矩陣通過除法計算出擬合系數(shù)。
10.一種基于FPGA的N階數(shù)據(jù)擬合器,其特征在于,包括:端口定義模塊,用于定義信號輸入、輸出端口 ;定義數(shù)組模塊,用于定義兩個一維數(shù)組;N階矩陣計算模塊,用于根據(jù)兩個一維數(shù)組計算出N階矩陣;擬合系數(shù)計算模塊,通過N階矩陣計算出擬合系數(shù)。
【文檔編號】G06F9/44GK104331293SQ201410625753
【公開日】2015年2月4日 申請日期:2014年11月7日 優(yōu)先權(quán)日:2014年11月7日
【發(fā)明者】宋偉, 陳霞, 羅印升, 陳太洪, 樊寅逸, 談發(fā)明 申請人:江蘇理工學(xué)院