国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種基于MATLAB快速開發(fā)跨平臺算法軟件的方法

2022-09-27 06:17周希娃張國玉胡繼軍
遙測遙控 2022年5期
關(guān)鍵詞:數(shù)據(jù)類型跨平臺調(diào)用

周希娃,張國玉,李 洋,胡繼軍

一種基于MATLAB快速開發(fā)跨平臺算法軟件的方法

周希娃,張國玉,李 洋,胡繼軍

(北京遙測技術(shù)研究所 北京 100076)

利用MATLAB進行算法的研究、仿真和實現(xiàn),已經(jīng)成為科研工作者的重要手段之一。在MATLAB上開發(fā)算法便捷、高效,但無法直接應(yīng)用在其他平臺,此時需要軟件人員編碼轉(zhuǎn)換進行二次開發(fā)。如果某個算法同時應(yīng)用在Windows和Linux這兩個系統(tǒng)中,軟件人員需要開發(fā)兩個不同的軟件,它們功能相同只是代碼不同。這不僅增加了軟件開發(fā)的工作量,同時也不利于后期維護。針對上述問題,提出了一種基于MATLAB快速開發(fā)跨平臺算法軟件的方法。首先,利用MATLAB開發(fā)算法的便捷性進行算法的調(diào)試與驗證,簡化接口函數(shù);其次,使用MATLAB Coder生成獨立于MATLAB的C/C++代碼;然后,將生成的代碼在不同平臺下進行封裝,生成該目標平臺的動態(tài)鏈接庫;最后,不同平臺通過調(diào)用該平臺下的動態(tài)鏈接庫,實現(xiàn)了同一算法的跨平臺軟件開發(fā)。所提出的算法軟件跨平臺開發(fā)方法,已成功應(yīng)用于多個實際項目。通過本方法,不僅縮短了軟件的開發(fā)周期,提高了軟件編程效率,減少了軟件開發(fā)中的人為錯誤,同時方便了軟件的后期維護。

算法軟件;跨平臺軟件開發(fā);自動代碼生成;MATLAB Coder

引言

MATLAB[1]具有高效的數(shù)值運算能力、完備的圖形處理能力、豐富的工具箱和接近數(shù)學(xué)表達的語言等特點,為科學(xué)研究、算法開發(fā)提供了一種全面高效的解決方案,并讓算法工程師在很大程度上擺脫了傳統(tǒng)非交互式程序設(shè)計語言(如C/C++)的編程模式[2]。然而,直接利用MATLAB強大的函數(shù)庫和工具箱開發(fā)的算法軟件,無法直接應(yīng)用在工程實現(xiàn)中,這就需要對MATLAB開發(fā)的算法進行人工二次編碼,轉(zhuǎn)換成獨立于MATLAB軟件的其他編程語言。由于編程語言的差異,在對算法的二次編碼過程中,不僅不易保持MATLAB源碼與其他編程語言的一致性,同時也容易出現(xiàn)人工手寫代碼的錯誤。

現(xiàn)代工程需求中,算法軟件往往需要同時運行在不同的操作系統(tǒng)中,典型的如Windows系統(tǒng)、Linux系統(tǒng)。不同操作系統(tǒng),對應(yīng)不同的開發(fā)語言。不同系統(tǒng)通過調(diào)用該系統(tǒng)提供的應(yīng)用程序接口API(Application Program Interface)來實現(xiàn)不同的功能需求,不同系統(tǒng)之間的API的實現(xiàn)方式差異很大。這使得跨平臺開發(fā)面臨著諸多問題[3],在某系統(tǒng)上開發(fā)的軟件,無法直接應(yīng)用于另一個系統(tǒng)中,需要編程人員作出大量修改方可移植。

目前,跨平臺軟件開發(fā)的主流編程語言是Java和C/C++。Java是將不同平臺與操作系統(tǒng)的跨系統(tǒng)核心代碼抽象出來,形成單獨的JVM層(Java Virtual Machine),也就是Java的虛擬機[4]。Java語言設(shè)計本身不受平臺的限制,Java代碼運行在JVM上。JAVA跨平臺運行的實質(zhì)是不同平臺有不同的JVM實現(xiàn)。只要針對不同平臺開發(fā)相應(yīng)的JVM,代碼就可以實現(xiàn)跨平臺[5]。因此,Java付出了運行效率的代價,一般程序之間通過操作系統(tǒng)的CPU執(zhí)行,而Java語言需要先通過JVM再映射到操作系統(tǒng)里,最后由操作系統(tǒng)執(zhí)行。

QT是一個跨平臺的C++開發(fā)庫[6]。QT在不同操作系統(tǒng)下都有相應(yīng)的底層類庫,然后再通過一個公共的應(yīng)用層接口實現(xiàn)跨平臺,QT的軟件開發(fā)就是基于這個公共的應(yīng)用層接口來完成的。使用QT編寫的代碼是跨平臺的,而不是編譯出來的文件跨平臺[7]。因此,同一份代碼放到另一種平臺上運行時,需要用該目標平臺的類庫進行重新編譯。

但不管是用Java還是C/C++進行算法軟件開發(fā),在算法的設(shè)計、調(diào)試階段都不如MATLAB便捷。因此,本文實現(xiàn)了一種基于MATLAB快速開發(fā)跨平臺算法軟件的方法。該方法利用MATLAB的便捷性進行算法開發(fā),通過自動代碼生成標準的C/C++代碼,然后在不同運行環(huán)境下進行封裝,實現(xiàn)不同平臺的調(diào)用。這使得即使算法工程師并不熟悉跨平臺的開發(fā)知識,也能夠進行跨平臺的算法軟件開發(fā),還可以把主要精力用于算法開發(fā)和系統(tǒng)測試。

1 跨平臺算法軟件開發(fā)流程

MATLAB開發(fā)算法軟件的優(yōu)勢非常明顯:在算法設(shè)計階段,通過利用數(shù)學(xué)意義明了的M代碼進行算法研究、開發(fā)與驗證,在結(jié)果得到驗證后直接轉(zhuǎn)換為目標平臺的代碼,然后封裝和移植?;贛ATLAB跨平臺的算法軟件開發(fā)流程如圖1所示。根據(jù)輸入需求及算法原理,用MATLAB進行算法設(shè)計、開發(fā)和驗證,待算法滿足功能和性能需求后,進行自動代碼生成,并對生成的代碼進行接口封裝,滿足不同平臺下的移植需求。后期根據(jù)需求的擴展和變化不斷優(yōu)化、迭代和完善算法,再重新生成代碼及封裝,每次修改只需更改MATLAB中的源碼,就能做到不同平臺之間算法源碼的一致性。

圖1 基于MATLAB跨平臺算法軟件開發(fā)流程圖

2 自動代碼生成技術(shù)

MATLAB Coder[8]工具是MathWorks公司于2011年推出的一個重要產(chǎn)品,它可以將MATLAB函數(shù)直接生成可讀、可移植的C/C++代碼。軟件工程師們不再需要將設(shè)計的算法進行人工二次C/C++語言開發(fā),而是利用該軟件中強大的函數(shù)庫[9],按照一定的流程,直接進行代碼自動生成。這種開發(fā)模式減少了復(fù)雜繁瑣的代碼轉(zhuǎn)換、調(diào)試工作,避免了不必要的人工錯誤。

MATLAB Coder進行自動代碼生成時有一定的流程。簡單的M函數(shù)[1]可以直接進行代碼生成,而面對復(fù)雜情況時,需要根據(jù)具體情況做出相應(yīng)的修改與調(diào)整,才能達到自動代碼生成的目的。在實際過程中,MATLAB算法進行自動代碼生成的具體流程如圖2所示。

圖2 MATLAB Coder自動代碼生成流程圖

圖2中MEX代碼驗證主要有兩個目的[10]:一是修改和調(diào)整M函數(shù),使其支持代碼轉(zhuǎn)換,并成功轉(zhuǎn)換為目標代碼;二是對轉(zhuǎn)換好的目標代碼進行驗證,使MEX函數(shù)調(diào)用的結(jié)果與M文件運行的結(jié)果一致。MEX文件相當于先轉(zhuǎn)換為目標代碼,并向MATLAB提供接口,使MATLAB直接調(diào)用并進行驗證。因此,能很方便地驗證轉(zhuǎn)換代碼編譯后的執(zhí)行結(jié)果。MEX驗證通過,意味著如果目標環(huán)境一致,生成的代碼能夠正確運行在目標環(huán)境中。

2.1 模塊化M函數(shù)

在編寫M函數(shù)時,要做到統(tǒng)籌編程,在編寫時就注意自動代碼生成的規(guī)范。按照模塊化設(shè)計思想,將整個算法軟件按功能劃分成獨立模塊,不同模塊實現(xiàn)不同功能,并將其實現(xiàn)的功能結(jié)果作為輸出,將所需的數(shù)據(jù)作為輸入,再將各個子模塊組合封裝成大系統(tǒng)中的一個配置項。該配置項除了有初始化、終止、數(shù)據(jù)類型定義等接口函數(shù)外,其他子函數(shù)在自動代碼生成中均只有源文件(*.c)和頭文件(*.h)。自動代碼生成后,對外接口函數(shù)調(diào)用只需關(guān)心該配置項函數(shù)的輸入與輸出。

2.2 錯誤檢查及修改

在代碼生成階段,需要點擊“Check for Issues”進行兼容性檢查。對檢查出的錯誤,可打開“Open Error Report”或“View Report”報告,查看錯誤提示信息和位置。根據(jù)相關(guān)提示信息進行修改,在不改變源碼功能邏輯的情況下使得其符合自動代碼生成規(guī)范,保存后再次進行檢查。該過程需要多次迭代,以便逐個消除不兼容的情況,直到最終能夠生成MEX代碼。對于生成的MEX代碼,會進行測試驗證,在測試驗證不成功時,同樣會給出相應(yīng)的報告文件,依據(jù)報告文件進行修改,直到MEX代碼通過測試驗證。此時表明可以生成C/C++代碼,并且該代碼已預(yù)先通過了MATLAB的調(diào)用驗證。

程序中影響自動代碼生成的常見錯誤和應(yīng)對方法總結(jié)如下:

①數(shù)據(jù)類型賦值不一致或數(shù)據(jù)類型運行前后發(fā)生變化。如將double型數(shù)據(jù)賦值給INT32型數(shù)據(jù),將complex(復(fù)數(shù))型數(shù)據(jù)賦值給real(實數(shù))型數(shù)據(jù)??赏ㄟ^預(yù)先指定數(shù)據(jù)類型進行實現(xiàn),如data=coder.nullcopy(zeros(N,1,'like',sig_in)),指定data的數(shù)據(jù)類型與輸入sig_in一致,如果sig_in為復(fù)數(shù),則data為復(fù)數(shù);sig_in為實數(shù),則data也會是實數(shù)型數(shù)據(jù)。

②數(shù)據(jù)長度未提前聲明或運行時長度發(fā)生變化。MATLAB在運行過程中數(shù)據(jù)長度可以變化,但C/C++則需確定的數(shù)據(jù)長度。因此,在使用數(shù)據(jù)時,需提前進行長度聲明,如data=coder.nullcopy (zeros(,1,'like',sig_in)),coder.nullcopy表示申明數(shù)組大小為×1,但不賦值,其中為數(shù)組可能的最大長度。

③賦值語句左右兩側(cè)不一致。當數(shù)據(jù)長度不確定時,可用動態(tài)內(nèi)存分配技術(shù)實現(xiàn)。推薦使用data=[]進行初始化;數(shù)據(jù)賦值時采用data=[data value],其中value為新的賦值數(shù)據(jù),可以為單值,也可以是復(fù)雜的數(shù)據(jù)類型。其中data=[data value]為行向量;data=[data;value]為列向量。通過該方式可實現(xiàn)數(shù)據(jù)的動態(tài)內(nèi)存分配。

④變量在某些語句中未定義。經(jīng)常出現(xiàn)在if else語句中并且該變量作為輸出的情況,在這種情況下,使用變量之前先進行初始化,確保每條分支語句都有確定輸出。

⑤ MATLAB自帶的一些函數(shù)不支持直接轉(zhuǎn)換,如decimate,interp,tabulate等函數(shù)。因此,先修改再進行轉(zhuǎn)換。比如插值interp函數(shù),可提前將不同倍數(shù)的濾波器系數(shù)存儲到文件里,運行時用關(guān)鍵字coder.load進行加載,通過首地址和數(shù)據(jù)長度進行濾波系數(shù)的提取,然后再進行插值運算。

2.3 快速FFT函數(shù)的生成

FFTW3[11]是一個快速計算離散傅里葉變換的標準C語言程序集,號稱最快的FFT算法[12, 13]。在MATLAB Coder轉(zhuǎn)成C/C++語言時,并不會自動調(diào)用FFTW3庫,因此生成的代碼FFT運算不如FFTW3快。這里介紹一種能夠直接調(diào)用FFTW3庫的代碼生成方法。首先,將FFTW3的頭文件和庫文件放在MATLAB安裝路徑>user>lib中,使用coder.fftw.StandaloneFFTW3Interface進行useMyFFTW的類定義,具體使用參考help說明。然后在Generate Code中設(shè)置Custom FFT library callback為useMyFFTW,則在生成的代碼中,使用到FFT函數(shù)的地方,都會自動調(diào)用FFTW3庫里的函數(shù)。

2.4 接口函數(shù)的簡化

數(shù)據(jù)類型簡單的接口函數(shù),將會使函數(shù)調(diào)用非常方便。當接口函數(shù)輸入和輸出數(shù)據(jù)長度可變時,其接口函數(shù)的數(shù)據(jù)類型為可變數(shù)據(jù)長度emxArray的數(shù)據(jù)類型。這將會導(dǎo)致接口調(diào)用復(fù)雜,而且容易由于未事先申明變量導(dǎo)致函數(shù)調(diào)用不成功。因此,這里介紹一種能夠生成簡易接口函數(shù)的方法。首先,聲明輸出數(shù)組可能的最大長度;其次,在MATLAB中將輸出數(shù)組作為輸入進行調(diào)用;最后,在函數(shù)輸出的地方進行數(shù)組的賦值操作。實例如下:

①預(yù)先申明輸出數(shù)組fre_abs和fre_cplx可能的最大長度,假設(shè)為L, sig_in為輸入的復(fù)數(shù)型數(shù)據(jù)

fre_abs=coder.nullcopy(zeros(L,1,'like',real(sig_in)));

fre_cplx=coder.nullcopy(zeros(L,1,'like',sig_in));

②將輸出數(shù)組作為接口函數(shù)的輸入、輸出進行調(diào)用,len表示實際有效數(shù)據(jù)長度

function [fre_abs,fre_cplx,len]= FunExample(sig_in,fre_abs,fre_cplx) %codegen

③在函數(shù)輸出時,進行數(shù)據(jù)賦值

fre_cplx(1:len)=outData(1:len);

fre_abs(1:len)=abs(fre_cplx);

按照以上步驟進行操作,其生成代碼的接口函數(shù)數(shù)據(jù)類型會相當簡單。

2.5 代碼生成

當MEX代碼通過測試驗證時,就可以點擊代碼生成了,代碼生成支持定制化操作。比如生成的類型可以選擇源文件、MEX文件、靜態(tài)庫、動態(tài)庫以及可執(zhí)行文件;可選擇硬件版、編譯工具;同時支持文件路徑、運行速度、存儲特性、代碼風(fēng)格、調(diào)試設(shè)置等定制化設(shè)置;一般情況下選擇默認設(shè)置即可。

自動代碼生成后,會有對應(yīng)函數(shù)的源文件(*.c)和頭文件(*.h),其文件一一對應(yīng)??蓪ATLAB源程序和生成代碼進行雙向追蹤。除此之外,需要關(guān)注一些接口類的文件,比如初始化類函數(shù)*.initial.c,終止類函數(shù)*.terminate.c;*.initial.c和*.terminate.c一般為空,在封裝接口時可以根據(jù)需要自行定義;*.types.h文件中定義了輸入、輸出的數(shù)據(jù)結(jié)構(gòu);*.emxAPI.c函數(shù)為emxArray數(shù)據(jù)類型(動態(tài)分配數(shù)組)的API接口函數(shù);*.emxutil.c函數(shù)可對每一emxArray型變量判斷是否有足夠的空間。同時在examples文件中的main.c函數(shù)展示了如何調(diào)用生成的代碼,包括數(shù)據(jù)的聲明和初始化、程序的調(diào)用、終止和內(nèi)存的釋放,是寫接口函數(shù)的極好參考。

2.6 代碼驗證

原則上,如果MEX驗證通過了,則生成的代碼是不會有問題的。在對生成代碼進行驗證(確保與MATLAB程序運行時的輸入數(shù)據(jù)完全一致),出現(xiàn)結(jié)果與MATLAB不一致時,大部分原因是對生成代碼的調(diào)用程序不完善或不正確所導(dǎo)致的。比如直接使用沒有初始化的emxArray數(shù)據(jù)類型,導(dǎo)致程序崩潰。因此,首先需確保驗證程序本身不存在BUG,驗證程序可參照examples中的main函數(shù),此時需將輸入數(shù)據(jù)改成待驗證的測試數(shù)據(jù)。在保證驗證程序正確的情況下,如果調(diào)用生成的代碼出現(xiàn)崩潰或者結(jié)果與實際不符(這種情況較少),可通過對驗證程序進行斷點調(diào)試,找到出錯的位置,并在MATLAB源碼對應(yīng)的位置進行修改。一旦修改了MATLAB源碼,則重新進行代碼生成和驗證。只要MATLAB源程序設(shè)計科學(xué),沒有BUG,生成的代碼在目標平臺上也能正常運行。

3 生成代碼的跨平臺封裝

自動代碼生成的函數(shù)可以直接在目標平臺上調(diào)用,但為了規(guī)范化管理軟件,可對生成的代碼用統(tǒng)一接口函數(shù)進行封裝。其封裝的接口函數(shù)可參照examples中的main函數(shù)進行修改。

不同運行環(huán)境下,算法軟件的封裝方式不一樣。比如Windows平臺調(diào)用的話,在統(tǒng)一接口函數(shù)引入關(guān)鍵字__declspec(dllexport),然后在Visual Studio下將統(tǒng)一接口函數(shù)封裝成.dll(Dynamic Link Library)文件,在目標平臺調(diào)用時引入關(guān)鍵字__declspec(dllimport)即可[14];而Linux平臺中調(diào)用,可直接在Shell中用gcc打包封裝成.so(Share Object)庫進行調(diào)用[15];在安卓系統(tǒng)中通常采用Java進行編程,Java調(diào)用標準C/C++時采用關(guān)鍵字JNIEXPORT和JNIEnv對生成的代碼進行統(tǒng)一接口函數(shù)的編寫[5],再將統(tǒng)一接口函數(shù)打包封裝成.so文件,即可作為插件使用;在QT中調(diào)用標準C/C++時將統(tǒng)一接口函數(shù)封裝成類[6],再打包成.so文件,即可在QT作為插件使用。

代碼封裝后,算法軟件作為一個整體在調(diào)用的平臺中進行軟件測試。首先通過專門測試工具進行軟件的單元測試;測試時算法軟件的功能,應(yīng)至少被一個正常測試用例或一個被認可的異常測試用例所覆蓋;算法軟件測試時,其輸入應(yīng)至少包括有效等價類值、無效等價類和邊界數(shù)值;測試算法軟件運行在邊界狀態(tài)、異常狀態(tài)和人為設(shè)定狀態(tài)下時的功能和性能。當算法軟件沒有通過測試時,定位問題,然后返回MATLAB源碼進行修改,再進行自動代碼生成、驗證、封裝和調(diào)用,直到通過全部的軟件測試為止。

4 實際應(yīng)用

本文所提出的算法軟件跨平臺開發(fā),成功用于某大數(shù)據(jù)匯聚處理系統(tǒng)和某接收機項目。前期通過MATLAB進行算法設(shè)計、仿真和驗證,確保算法本身設(shè)計合理后,進行自動代碼生成。生成后的代碼在Visual Studio進行調(diào)用,通過了TestBed的軟件測試,在測試過程中代碼沒有出現(xiàn)問題。然后將代碼封裝成.dll文件,在Windows系統(tǒng)下開發(fā)的上位機中成功調(diào)用該.dll文件,運行結(jié)果正確。在某大數(shù)據(jù)匯聚處理系統(tǒng)中,由于軟件均運行在國產(chǎn)化硬件平臺的Linux系統(tǒng)中,因此將自動生成的代碼封裝成.so文件,在該系統(tǒng)中成功調(diào)用了該.so的算法插件,實現(xiàn)了相應(yīng)的功能。在某接收機項目中,由于開發(fā)時間緊,研發(fā)人員主要將工作放在MATLAB上的算法設(shè)計、驗證和優(yōu)化上,后期通過代碼生成和封裝,最終在QT中成功調(diào)用該算法軟件,實現(xiàn)了系統(tǒng)的聯(lián)調(diào)。

5 結(jié)束語

本文利用MATLAB開發(fā)算法的便捷性和自動代碼生成技術(shù),提出了一種基于MATLAB的快速開發(fā)跨平臺算法軟件的方法。在實際工程項目中,應(yīng)用了該算法的開發(fā)模式,驗證了本方法的有效性和高效性。算法研發(fā)是未來的核心競爭力,開發(fā)人員通過本文的方法進行算法軟件開發(fā),將主要精力集中在算法研發(fā)上,所開發(fā)的算法軟件只需適配性修改接口函數(shù)就可以實現(xiàn)在不同平臺中調(diào)用,提升了軟件開發(fā)效率。本文提出的跨平臺算法軟件開發(fā)方法,將會有更大的應(yīng)用價值。

[1] 胡曉冬, 董辰輝, 等. MATALB從入門到精通(第2版)[M]. 北京: 人民郵電出版社, 2018.

[2] 張軼. MATALB信號處理—算法、仿真與實現(xiàn)[M]. 北京: 清華大學(xué)出版社, 2022.

[3] 張弛. 基于C++語言的跨平臺軟件開發(fā)的設(shè)計與實現(xiàn)[D]. 北京: 北京交通大學(xué), 2010.

[4] 周志明. 深入理解JAVA虛擬機[M]. 北京: 機械工業(yè)出版社, 2011.

[5] 明日科技. JAVA從入門到精通(第5版)[M]. 北京: 清華大學(xué)出版社, 2019.

[6] 彭源, 孫超超, 田秀霞, 等. Qt C++編程從入門到實踐[M]. 北京: 清華大學(xué)出版社, 2022.

[7] 徐野, 趙星宇, 黃海新. Qt平臺體系與應(yīng)用-Qt5.5+核心方法、技巧與案例. [M]. 北京: 北京航空航天大學(xué)出版社, 2017.

[8] Online MATLAB[EB/OL]. [2021-09-10]. http://www.mathworks.com/help/coder.

[9] 周世欽, 王波濤. MATLAB程序轉(zhuǎn)C代碼的方法研究[J]. 價值工程, 2018, 37(2): 182–185.

ZHOU Shiqin, WANG Botao. Method study of MATLAB program transforming to C code[J]. Value Engineering, 2018, 37(2): 182–185.

[10] 楊耀宗. 基于MATLAB的λ能譜處理工具箱的研制[D]. 成都: 成都理工大學(xué), 2014.

[11] FFTW[EB/OL]. [2021-09-10]. http://www.fftw.org.

[12] FRIGO M, JOHNSON S G. The design and implementation of FFTW3[J]. Proceedings of the IEEE, 2005, 93(2): 216–231.

[13] 李佳偉. 軟件化雷達系統(tǒng)實時性研究[D]. 西安: 西安電子科技大學(xué), 2018.

[14] 張錚, 張寶山, 周天立. Windows程序設(shè)計(第3版)[M]. 北京: 人民郵電出版社, 2022.

[15] BLUM R, BRESNAHAN C. Linux命令行與shell腳本編程大全(第3版)[M]. 北京: 人民郵電出版社, 2016.

A method of rapidly developing cross-platform algorithm software based on MATLAB

ZHOU Xiwa, ZHANG Guoyu, LI Yang, HU Jijun

(Beijing Research Institute of Telemetry, Beijing 100076, China)

Using MATLAB for developing, simulating and implementing algorithm software has become one of primary means for researchers.Although the algorithm developed on MATLAB is convenient and efficient, it cannot be directly applied to other platforms, it has to be under secondary development. If one algorithm is to be applied in both Windows and Linux systems, the software engineers need to coder two software, which are same functional but not in same form. That not only largely increases the workload, but also inconvenient to subsequent maintenance. To solve those problems, this paper formulates a method for rapid development of cross-platform algorithm software based on MATLAB. Firstly, algorithms are developed and validated in MATLAB for its convenience; Secondly, MATLAB Coder is used to generate C/C++, which is independent of MATLAB; Then generated code are packaged into corresponding platform dynamic link library in target platform; Finally, by calling interface functions is able to achieve the requirement of the same algorithm software running on different platforms. The method mentioned above has been successfully applied to some engineering projects. During the period of software development, the method not only shortens the software development cycle, improves the efficiency of programming, reduces the errors of human, but also facilitates software post-maintenance.

Algorithm software; Cross-platform software development; Automatic generate code; MATLAB Coder

TP311

A

CN11-1780(2022)05-0068-06

10.12347/j.ycyk.20210910001

周希娃, 張國玉, 李洋, 等.一種基于MATLAB快速開發(fā)跨平臺算法軟件的方法[J]. 遙測遙控, 2022, 43(5): 68–73.

DOI:10.12347/j.ycyk.20210910001

: ZHOU Xiwa, ZHANG Guoyu, LI Yang, et al. A method of rapidly developing cross-platform algorithm software based on MATLAB [J]. Journal of Telemetry, Tracking and Command, 2022, 43(5): 68–73.

2021-09-10

2022-04-19

周希娃 1988年生,碩士,工程師,主要研究方向為信息對抗。

張國玉 1987年生,碩士,高級工程師,主要研究方向為信息對抗。

李 洋 1996年生,碩士,助理工程師,主要研究方向為信息對抗。

胡繼軍 1981年生,碩士,研究員,主要研究方向為信息對抗。

(本文編輯:傅 杰)

猜你喜歡
數(shù)據(jù)類型跨平臺調(diào)用
跨層級網(wǎng)絡(luò)、跨架構(gòu)、跨平臺的數(shù)據(jù)共享交換關(guān)鍵技術(shù)研究與系統(tǒng)建設(shè)
一款游戲怎么掙到全平臺的錢?
潛力雙跨平臺:進階:誰將跨入下一個“十大”?
系統(tǒng)虛擬化環(huán)境下客戶機系統(tǒng)調(diào)用信息捕獲與分析①
基于SeisBase模型的地震勘探成果數(shù)據(jù)管理系統(tǒng)設(shè)計
線上眾籌產(chǎn)品的特征分析與研究
相似度計算及其在數(shù)據(jù)挖掘中的應(yīng)用
基于屬性數(shù)據(jù)的系統(tǒng)調(diào)用過濾方法
基于C++語言的跨平臺軟件開發(fā)的設(shè)計
利用RFC技術(shù)實現(xiàn)SAP系統(tǒng)接口通信
光山县| 满城县| 宜昌市| 黄梅县| 绥滨县| 白朗县| 黎平县| 五寨县| 惠来县| 景谷| 丹阳市| 北碚区| 高平市| 高唐县| 阳新县| 隆回县| 广水市| 盐亭县| 米林县| 昭苏县| 安新县| 健康| 连南| 疏附县| 刚察县| 澄城县| 无为县| 肃南| 大余县| 板桥市| 永兴县| 阜新| 扎囊县| 阿拉善左旗| 乌拉特前旗| 宝兴县| 大城县| 横峰县| 始兴县| 池州市| 嘉祥县|