如何利用matlab實(shí)現(xiàn)算法設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
數(shù)值計(jì)算方法是一種用于解決數(shù)學(xué)問(wèn)題的方法,涉及到數(shù)值近似、數(shù)值逼近、數(shù)值積分、數(shù)值微分等等。算法設(shè)計(jì)是數(shù)值計(jì)算方法的核心,它包括了數(shù)值方法的數(shù)學(xué)原理和計(jì)算機(jī)實(shí)現(xiàn)的算法,能夠有效地解決各種數(shù)學(xué)問(wèn)題。
MATLAB是一種強(qiáng)大的數(shù)值計(jì)算軟件,它提供了許多數(shù)值計(jì)算方法的工具箱,如優(yōu)化工具箱、信號(hào)處理工具箱和圖像處理工具箱等。在MATLAB中,可以使用內(nèi)置函數(shù)或自己編寫函數(shù)來(lái)實(shí)現(xiàn)各種數(shù)值計(jì)算方法。
下面是一些常見(jiàn)的數(shù)值計(jì)算方法及其MATLAB實(shí)現(xiàn):
1.牛頓迭代法
牛頓迭代法是求解非線性方程的一種常用方法,其基本思想是利用函數(shù)的局部線性逼近來(lái)逐步逼近函數(shù)的零點(diǎn)。在MATLAB中,可以使用“fzero”函數(shù)來(lái)實(shí)現(xiàn)牛頓迭代法。
2.龍格-庫(kù)塔方法
龍格-庫(kù)塔方法是一種求解常微分方程的數(shù)值方法,其基本思想是利用微分方程的初值來(lái)逐步逼近解的函數(shù)值。在MATLAB中,可以使用“ode45”函數(shù)來(lái)實(shí)現(xiàn)龍格-庫(kù)塔方法。
3.最小二乘法
最小二乘法是一種數(shù)據(jù)擬合方法,其基本思想是將實(shí)際觀測(cè)值與理論值之間的誤差最小化。在MATLAB中,可以使用“polyfit”函數(shù)來(lái)實(shí)現(xiàn)最小二乘法。
4.高斯-塞德?tīng)柕?
高斯-塞德?tīng)柕ㄊ且环N求解線性方程組的數(shù)值方法,其基本思想是將方程組分解為下三角矩陣和上三角矩陣,然后通過(guò)迭代來(lái)逐步逼近解的值。在MATLAB中,可以使用“gs”函數(shù)來(lái)實(shí)現(xiàn)高斯-塞德?tīng)柕ā?
5.辛普森法
辛普森法是一種數(shù)值積分方法,其基本思想是將被積函數(shù)在積分區(qū)間上進(jìn)行二次插值,然后再進(jìn)行數(shù)值積分。在MATLAB中,可以使用“quad”函數(shù)來(lái)實(shí)現(xiàn)辛普森法。
MATLAB是美國(guó)MathWorks公司開(kāi)發(fā)的大型數(shù)學(xué)計(jì)算應(yīng)用軟件系統(tǒng),它提供了強(qiáng)大的矩陣處理和繪圖功能,簡(jiǎn)單易用,可信度高,靈活性好,因而在世界范圍內(nèi)被科學(xué)工作者、工程師以及大學(xué)生和研究生廣泛使用,目前已經(jīng)成為國(guó)際市場(chǎng)上科學(xué)研究和工程應(yīng)用方面的主導(dǎo)軟件。掌握MATLAB并借助它解決理論與應(yīng)用問(wèn)題已經(jīng)成為每一個(gè)從事科學(xué)研究和工程技術(shù)人員應(yīng)該具備的技能。
MATLAB是Matrix Laboratory(矩陣實(shí)驗(yàn)室)的縮寫,是當(dāng)前最流行、功能強(qiáng)大的科技應(yīng)用軟件和編程語(yǔ)言之一。MATLAB語(yǔ)言有以下特點(diǎn):
1、功能強(qiáng)大:數(shù)值計(jì)算和符號(hào)計(jì)算,計(jì)算和編程可視化,數(shù)字和文字的統(tǒng)一處理,離線和在線計(jì)算;
2、界面友好,語(yǔ)言簡(jiǎn)明:以復(fù)數(shù)矩陣為計(jì)算單元,指令表達(dá)與數(shù)學(xué)表達(dá)式相近,是一種演算式語(yǔ)言;
3、開(kāi)放性強(qiáng):具有70余個(gè)功能強(qiáng)大的工具箱,覆蓋面極廣,可以完成數(shù)字圖像處理、系統(tǒng)仿真、系統(tǒng)辨識(shí)、模糊控制、神經(jīng)網(wǎng)絡(luò)建模、信號(hào)處理、魯棒控制、非線性控制、優(yōu)化理論、統(tǒng)計(jì)分析等。
MATLAB成為應(yīng)用學(xué)科計(jì)算機(jī)輔助分析、設(shè)計(jì)、仿真、教學(xué)必不可少的基礎(chǔ)軟件。工具箱函數(shù)為各個(gè)領(lǐng)域的研究和工程應(yīng)用提供了有力的手段。
MATLAB系統(tǒng)的基本函數(shù)庫(kù)具有初等函數(shù)、初等矩陣和矩陣變換、包括性代數(shù)方程組和矩陣特征值問(wèn)題等數(shù)值線性代數(shù)、多項(xiàng)式運(yùn)算和求根、數(shù)據(jù)析和傅立葉變換以及某些特殊的矩陣函數(shù)和數(shù)學(xué)函數(shù)等眾多內(nèi)容。
MATLAB還包括一系列被稱作工具箱(TOOLBOX)的專業(yè)求解工具。工具箱實(shí)際上是MATLAB針對(duì)不同學(xué)科、不同專業(yè)所開(kāi)發(fā)的專用函數(shù)庫(kù),用來(lái)求解各個(gè)領(lǐng)域的數(shù)值計(jì)算問(wèn)題,包括數(shù)據(jù)采集工具箱、信號(hào)處理工具箱、圖像處理工具箱、小波分析工具箱、控制工具箱等。隨著MATLAB的不斷升級(jí),所含工具箱的功能越來(lái)越豐富,規(guī)模越來(lái)越龐大,因此,應(yīng)用也越來(lái)越廣泛,成為各種專業(yè)科研人員和工程技術(shù)人員的得力工具。
一個(gè)圖形界面的完成,最終是通過(guò)圖形界面的各種控件對(duì)象的操作來(lái)完成,而這些操作必定是通過(guò)Matlab 中函數(shù)代碼的執(zhí)行來(lái)完成的。函數(shù)代碼的編制可以通過(guò)編寫回調(diào)函數(shù)完成,而編寫時(shí)當(dāng)所要求執(zhí)行的指令比較簡(jiǎn)單時(shí),可以把該控件的代碼直接寫在“CallBack“屬性中;當(dāng)所要求執(zhí)行的指令比較長(zhǎng)時(shí)可以把函數(shù)代碼放在一個(gè)自定義的M 文件中,在“CallBack”中直接將其文件名寫上,也可以在主控文件中直接編寫,當(dāng)操作該控件時(shí)系統(tǒng)會(huì)自動(dòng)執(zhí)行“CallBack”中所要求執(zhí)行的內(nèi)容。
在本設(shè)計(jì)中,采用的是在主控文件中直接編寫的方法,在GUI 界面單擊當(dāng)前需要編寫程序的控件,然后右擊將出現(xiàn)一個(gè)右鍵菜單,然后選擇Callback 選項(xiàng),即可直接進(jìn)入主控M 文件,并且系統(tǒng)會(huì)自動(dòng)生成語(yǔ)句。
目前的MATLAB已經(jīng)成為國(guó)際上最為流行的軟件之一,它除了傳統(tǒng)的交互式編程之外,還提供了豐富可靠的矩陣運(yùn)算、圖形繪制、數(shù)據(jù)處理、圖形處理,方便的windows編程等便利工具,出現(xiàn)了各種以MATLAB為基礎(chǔ)的實(shí)用工具箱,廣泛地應(yīng)用于自動(dòng)控制、圖像信號(hào)處理、生物醫(yī)學(xué)工程、語(yǔ)言處理、雷達(dá)工程、信號(hào)分析、振動(dòng)理論、時(shí)序分析于建模、優(yōu)化設(shè)計(jì)等領(lǐng)域。
近年來(lái),在數(shù)字通信、網(wǎng)絡(luò)、視頻和圖像處理領(lǐng)域,F(xiàn)PGA已經(jīng)成為高性能數(shù)字信號(hào)處理系統(tǒng)的關(guān)鍵元件。FPGA的邏輯結(jié)構(gòu)不僅包括查找表、寄存器、多路復(fù)用器、存儲(chǔ)器,而且還有快速加法器、乘法器和I/O處理專用電路。FPGA具有實(shí)現(xiàn)高性能并行算法的能力,是構(gòu)成高性能可定制數(shù)據(jù)通路處理器(數(shù)字濾波、FFT)的理想器件。如Virtex-II Pro FPGA包含高性能的可編程架構(gòu)、嵌入式PowerPC處理器和3.125Gbps收發(fā)器等。
但是,F(xiàn)PGA在數(shù)字信號(hào)處理領(lǐng)域的廣泛應(yīng)用受限于幾個(gè)因素。首先,DSP開(kāi)發(fā)人員不熟悉硬件設(shè)計(jì),尤其是FPGA。他們使用Matlab驗(yàn)證算法,運(yùn)用C語(yǔ)言或匯編語(yǔ)言編程,通常不會(huì)使用硬件描述語(yǔ)言(VHDL或Verilog)實(shí)現(xiàn)數(shù)字設(shè)計(jì)。其次,雖然VHDL語(yǔ)言也提供了許多高層次的語(yǔ)言抽象,但是基于并行硬件系統(tǒng)的VHDL程序設(shè)計(jì)與基于微處理器的串行程序設(shè)計(jì)有很大的不同。
基于以上原因,Xilinx公司開(kāi)發(fā)了基于Matlab的System Generator for DSP工具。System Generator for DSP是Simulink中一個(gè)基于FPGA的信號(hào)處理建模和設(shè)計(jì)工具。該工具可以將一個(gè)DSP系統(tǒng)表示為一個(gè)高度抽象的模塊,并自動(dòng)將系統(tǒng)映射為一個(gè)基于FPGA的硬件方案。重要的是,該System Generator for DSP實(shí)現(xiàn)這些功能并沒(méi)有降低硬件性能。
1、System Generator for DSP的特點(diǎn)
simulink為DSP系統(tǒng)提供了強(qiáng)有力的高層次建模環(huán)境,可大量應(yīng)用于算法開(kāi)發(fā)和驗(yàn)證。System Generator for DSP作為simulink的一個(gè)工具箱很好地體現(xiàn)了這些特性,同時(shí)又可以自動(dòng)將設(shè)計(jì)轉(zhuǎn)換為可綜合的高效硬件實(shí)現(xiàn)方案。該硬件實(shí)現(xiàn)方案忠實(shí)于原始設(shè)計(jì),因此設(shè)計(jì)模型與硬件實(shí)現(xiàn)在采樣點(diǎn)(在simulink中定義)是一一對(duì)應(yīng)的。通過(guò)使用Xilinx精心設(shè)計(jì)的IP(intellectual property)核可以使硬件方案具有較小的延遲和體積。雖然System Generator中的IP模塊是經(jīng)過(guò)功能抽象的,但是對(duì)于熟悉FPGA的設(shè)計(jì)者來(lái)說(shuō),該模塊也具有直接訪問(wèn)底層硬件細(xì)節(jié)的能力。例如,可以指定System Generator乘法器模塊使用Virtex-II系列FPGA中的專用高速乘法器元件,用戶定義的IP模塊也能夠作為黑盒子插入系統(tǒng)之中,等等。
使用System Generator for DSP實(shí)現(xiàn)系統(tǒng)設(shè)計(jì)的主要特點(diǎn)有:
●在simulink中實(shí)現(xiàn)FPGA電路的系統(tǒng)級(jí)建模,并自動(dòng)生成硬件描述語(yǔ)言。
●自動(dòng)生成modelsim測(cè)試程序,支持軟硬件仿真。
●支持用戶創(chuàng)建的simulink模塊。
●使用XILINX FPGA自動(dòng)實(shí)現(xiàn)硬件系統(tǒng)。支持的XILINX FPGA系列包括Spartan-II,Spartan-IIE、Spar-tan-3、Virtex、Virtex-E、Virtex-II、Virtex-II PRO。
2、使用System Generator for DSP實(shí)現(xiàn)系統(tǒng)級(jí)建模
傳統(tǒng)的DSP系統(tǒng)開(kāi)發(fā)人員在設(shè)計(jì)一個(gè)DSP系統(tǒng)時(shí),一般先研究算法,再使用matlab或C語(yǔ)言驗(yàn)證算法,最后由硬件工程師在fpga或DSP上實(shí)現(xiàn)并驗(yàn)證。典型的DSP系統(tǒng)設(shè)計(jì)流程如下:
(1) 用數(shù)學(xué)語(yǔ)言描述算法。
(2) 設(shè)計(jì)環(huán)境中使用雙精度數(shù)實(shí)現(xiàn)算法。
(3) 將雙精度運(yùn)算變?yōu)槎c(diǎn)運(yùn)算。
(4) 將設(shè)計(jì)轉(zhuǎn)換為有效的硬件實(shí)現(xiàn)。