版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、信號處理算法設(shè)計與驗證信號處理專業(yè)同學 之 算法開發(fā) 新手上路 專題講座杜偉韜廣播電視數(shù)字化教育部工程研究中心中國傳媒大學2009 11.4 本講座的面向?qū)ο?本講座的內(nèi)容 算法開發(fā)中工具鏈的使用 編寫結(jié)構(gòu)化的MATLAB仿真 MATLAB算法向C算法的映射和遷移 混合開發(fā)環(huán)境下的算法驗證與調(diào)試本講座面向?qū)ο?使用MATLAB開發(fā)算法的同學 完成理論算法設(shè)計后,需要把算法在某種處理器平臺上實現(xiàn)的同學帶著問題來聽課你知道小明是如何做的么?信號處理應用的場景設(shè)想 ,關(guān)于小明信號處理算法不會獨立存在,它需要某些載體和方法,讓數(shù)據(jù)流入到信號處理系統(tǒng)之中,處理之后再流出去小明是一個品學兼優(yōu)的電子系二年級
2、同學,他先后完成了以下的事情1、用MATLAB的信號處理工具箱,設(shè)計了一個64階、3KHz處的FIR低通濾波器,用MATLAB程序把流行音樂歌曲WAV文件中的人聲部分濾出來。2、還是用MATLAB環(huán)境,濾波器的系數(shù)不變,但是濾波器運算的部分用C程序?qū)崿F(xiàn),因為C的執(zhí)行要快一些,并且MATLAB里面可以編譯并且調(diào)用C程序3、為了更快,小明把浮點版本的C程序修改成定點版本的C程序了4、后來小明學習了數(shù)字信號處理器DSP的知識,老師獎勵給他一個開發(fā)板,于是小明可以對音頻線輸入的經(jīng)過ADC轉(zhuǎn)換的數(shù)字聲音信號進行實時的低通濾波處理,然后再用DAC把數(shù)字音頻信號轉(zhuǎn)換成模擬信號送到音頻輸出線上去,他把這個開發(fā)
3、板連接在電腦音頻輸出孔和音箱之間,聽著不一樣的音樂作品,小明快樂的享受著自己的小成果提問,小明除了豎著耳朵聽之外,有什么方法能精確一些的分析、評價自己做的濾波器的計算結(jié)果是否正確呢本講座的內(nèi)容 算法開發(fā)中工具鏈的使用 編寫結(jié)構(gòu)化的MATLAB仿真 MATLAB算法向C算法的映射和遷移 嵌入式開發(fā)環(huán)境下的算法驗證與調(diào)試一家之言 僅供參考關(guān)于工具的使用方法,最詳細的說明應當是工具的手冊。本講座的焦點在于,如何用一些 算法開發(fā)中工具鏈的使用 編寫結(jié)構(gòu)化的MATLAB仿真 MATLAB算法向C算法的映射和遷移 嵌入式開發(fā)環(huán)境下的算法驗證與調(diào)試算法中的工具鏈 算法的開發(fā)流程 工具的用途 各層環(huán)境之間的差
4、異 (matlab,c,目標cpu) 調(diào)試面臨的問題(數(shù)據(jù)一致性分析)算法開發(fā)的流程理論算法設(shè)計參考文獻,公式推導,算法可行性,開發(fā)快速算法、浮點仿真,算法的理論性能MATLAB C定點算法設(shè)計分析精度、動態(tài)范圍,確定字長,數(shù)制系統(tǒng)、定點仿真MATLAB C面向CPU算法設(shè)計發(fā)揮CPU運算單元存取通道的并行度,利用CPU的特定庫函數(shù),指令集C匯編問題:為什么不直接在目標平臺上開發(fā)算法,這樣的結(jié)果更加真實,似乎離著最終結(jié)果也更加接近?采用多個工具開發(fā)的原因問題本身是分層次的 理論上應當選取哪些算法?推導出來額數(shù)學公式正確么?有快速算法么?如何驗證理論計算和快速算法的正確性? 定點策略應該如何制定
5、?設(shè)定的動態(tài)范圍和精度夠么? 應該選取哪些處理器的指令集呢?哪些算法和數(shù)據(jù)應當放在處理器的片內(nèi)/片外呢?解決問題也是有順序的 一次面臨太多問題,普通人無法思考的面面俱到。 集中優(yōu)勢兵力、各個擊破。 層次化的設(shè)計,上層為底層提供需求,底層約束上層的可行性工具本身也是有特點的 容易生成激勵信號和測試環(huán)境模型,評價結(jié)果性能 執(zhí)行速度較快,跨平臺的移植能力較好 容易導出大量的節(jié)點信息,便于分析和調(diào)試 面向最終硬件結(jié)構(gòu),最能反映出真實結(jié)果數(shù)據(jù)一致性的驗證文件傳遞法激勵信號目目標標算算法法浮浮點點版版本本目目標標算算法法定定點點版版本本定點化輸出浮點信號輸出定點信號浮點輸入數(shù)據(jù)文件對比/誤差分析目目標標算
6、算法法C C定定點點版版本本目目標標算算法法C C浮浮點點版版本本定點輸入數(shù)據(jù)文件浮點輸出數(shù)據(jù)文件定點輸出數(shù)據(jù)文件加載到Matlab中Matlab環(huán)境C環(huán)境目標CPU環(huán)境目目標標算算法法C CP PU U平平臺臺版版本本外設(shè)輸入數(shù)據(jù)外設(shè)輸出數(shù)據(jù)控制程序 不是所有的仿真都必須要做,根據(jù)情況有選擇的做一部分就可,因為最終要做的是目標CPU環(huán)境下的算法代碼數(shù)據(jù)一致性的驗證內(nèi)存?zhèn)鬟f法激勵信號目目標標算算法法浮浮點點版版本本目目標標算算法法定定點點版版本本定點化輸出浮點信號輸出定點信號對比/誤差分析目目標標算算法法C C定定點點版版本本目目標標算算法法C C浮浮點點版版本本MEX接口MEX接口Matla
7、b環(huán)境C環(huán)境Matlab里面可以編譯和調(diào)用C程序,這稱為MEX(Matlab擴展)我們提供的fft參考設(shè)計中 包括 文件數(shù)據(jù)傳遞和MEX數(shù)據(jù)傳遞性能,是對比出來的 什么東西之間互相對比 首先有一個理想性能的指標,比如從公式中推導和分析出來的性能。 浮點算法模型的性能。不同字長配置的定點算法的性能。目標處理器平臺的算法性能。 怎么對比 根據(jù)你的算法應用情況,關(guān)注特定的指標參數(shù),比如,信噪比,誤碼率,最大誤差,平均誤差等等。理論算法設(shè)計 制定需求 輸入的信號特性,輸出的信號數(shù)據(jù)特性 處理速度的需求,資源開銷的需求 推導算法 選取符合需求的算法 推導算法標號系統(tǒng)和運算規(guī)則 研究算法的存儲結(jié)構(gòu) 仿真算
8、法 使用仿真工具進行浮點仿真 確定最終目標算法的公式 該仿真結(jié)果即為理性情況下系統(tǒng)的性能10( )() ( )Niy nx ni h i定點算法設(shè)計 分析數(shù)據(jù)動態(tài)范圍 信號數(shù)值邊界分析 數(shù)值定標 用多少比特字長表示各個數(shù)據(jù) 符號位,整數(shù)部分,小數(shù)部分 運算單元特性:溢出,舍入模式 仿真驗證 比特精確的參考模型 用于電路仿真或匯編優(yōu)化對照所謂定點,就是一種根據(jù)需要自定義的整數(shù)的含義,舉例來說19491001雖然是一個整數(shù),但是在特定的環(huán)境下也可以表示一個日期。信號處理中的定點就是規(guī)定了一個整數(shù)的整數(shù)位和小數(shù)位,例如規(guī)定0 x1002,整數(shù)和小數(shù)部分各占8個比特。這是程序員所定義的,但對于編譯器是
9、透明的,處理器仍然按照整數(shù)乘加運算對這些數(shù)據(jù)進行操作。很神奇是么?我小時候還以為電視機里面藏著人呢。舉例: 矢量點積X15.X1X0Y15.Y1Y0Z+ X(-1,+1) Y(-1,+1) T(-1,+1) Z(-16,+16)X,Y (1,0,15)T(1,0,15)(S,IL,FL)Z(1,3,15)16位CPU:X,Y (1,0,15) T(1,0,15)Z(1,3,12)32位CPU:X,Y (1,16,15) T(1,16,15) Z(1,16,15)150)()(iiyixz很多時候,32位CPU上的定點算法開發(fā)起來更容易,甚至不用考慮加法的溢出 算法開發(fā)中工具鏈的使用 編寫結(jié)構(gòu)化
10、的MATLAB仿真 MATLAB算法向C算法的映射和遷移 嵌入式開發(fā)環(huán)境下的算法驗證與調(diào)試結(jié)構(gòu)化的MATLAB仿真 什么是結(jié)構(gòu)化? 為什么要結(jié)構(gòu)化? MATLAB數(shù)據(jù)的結(jié)構(gòu)化什么是結(jié)構(gòu)化?A 程序1中的變量BCDBCDA程序2中的變量所謂結(jié)構(gòu)化的程序就是指,1 過程結(jié)構(gòu)化,這是通過函數(shù)調(diào)用來實現(xiàn)的,其對立面是用GOTO語句進行滿天飛。2存儲結(jié)構(gòu)化,這是利用結(jié)構(gòu)體之類的語法進行變量之間依存關(guān)系的捆綁,與之相對的是用全局變量隨意命名為什么要結(jié)構(gòu)化 1、過程結(jié)構(gòu)化的意義是封裝完成特定功能的代碼過程,這個重要性很明顯。 2、數(shù)據(jù)的結(jié)構(gòu)化容易被忽視 尤其是Matlab,可以隨意開辟新變量 當你面對幾十個
11、、上百個全局變量的時候你甚至記不清某個變量的用途,哭吧。 所以要把數(shù)據(jù)結(jié)構(gòu)化 例如變量“器官”的子變量有“心”,“肝”,“肺”等 和C的類與對象有些類似Matlab的數(shù)據(jù)結(jié)構(gòu)化 Matlab可以有結(jié)構(gòu)體對象 例如,在命令行敲入“s.a=1”,看看會發(fā)生什么 關(guān)于結(jié)構(gòu)體類型,請從Matlab的幫助文檔了解更多情況 結(jié)構(gòu)體可以作為函數(shù)調(diào)用的參數(shù) 例如某個函數(shù),把結(jié)構(gòu)體s的兩個成員變量a, b 縮小為0.5倍,可以這樣寫在文件foo.m中寫入function s = foo(s) a = s.a; b = s.b; a = a*0.5; b = b*0.5; s.a = a; s.b = b;end
12、在命令行敲入S1.a = 4; S1.b = 6;S1 = foo(S1);Matlab函數(shù)參數(shù)的結(jié)構(gòu)化 看看哪個代碼風格更好 1、k=foo(a,b,c,d,e,f,g) 2、k=foo(s) / s has sub element a,b,c,d,e,f,g 避免Matlab函數(shù)的入口參數(shù)過多 1,你可能會記不住有哪些參數(shù) 2,如果調(diào)用時傳遞參數(shù)的順序錯了就麻煩了 比如 函數(shù)原型是k=foo(a,b,c,d,e,f,g) 調(diào)用時寫成k1=foo(b1,a1,g1,f1,c1,d1,e1) 你覺得不可能?等你的變量名長度大于8個字母的時候就可能了結(jié)構(gòu)化的Matlab仿真包含什么內(nèi)容 初始化部
13、分 配置部分 算法模型部分 誤差分析部分大部分的電子系統(tǒng)都包括 初始化、配置、運行的功能?;仡櫮愕氖謾C,開機的時候為什么比較慢呢?因為在初始化硬件和軟件。來電話的時候是否有鈴聲和振動取決于什么呢?取決于情景模式的配置對吧。對于一個正在開發(fā)的系統(tǒng),為了評價和調(diào)試它,我們還要有一些探測、分析系統(tǒng)的輸出數(shù)據(jù)和內(nèi)部數(shù)據(jù)的方法。仿真部件的作用激勵信號目目標標算算法法浮浮點點版版本本目目標標算算法法定定點點版版本本定點化輸出浮點信號輸出定點信號對比/誤差分析配置激勵信號的類型:白噪聲、窄帶噪聲、單音正弦、多音正弦等初始化激勵信號的數(shù)據(jù)配置定點策略,如16位字長,32位字長等初始化算法模型的常量,例如濾波器
14、系數(shù)配置算法模型的參數(shù),例如濾波器的通帶阻帶、過渡帶配置分析模塊參數(shù),例如譜分析FFT長度,窗函數(shù)類型初始化分析模塊的常量,例如譜分析窗函數(shù)數(shù)據(jù)通常情況下,電子系統(tǒng)的各個模塊都需要配置和初始化,請思考,當你用遙控器配置電視機顯示1頻道的時候,這個配置命令被解析并轉(zhuǎn)化為高頻頭的頻點配置命令和顯像管的臺號顯示配置命令。但是內(nèi)部的配置解析命令對用戶卻是透明、不可見的。我們設(shè)計程序的時候也是類似的電子設(shè)備的初始化就像運動員的熱身,為了在當前模式下運行,需要先準備一些數(shù)據(jù)或是內(nèi)存空間等資源結(jié)構(gòu)化Matlab代碼的寫法 用結(jié)構(gòu)體來封裝不同的數(shù)據(jù) 結(jié)構(gòu)體的嵌套體現(xiàn)數(shù)據(jù)的包容關(guān)系 不同功能的代碼過程用函數(shù)封裝
15、 結(jié)構(gòu)體作為函數(shù)參數(shù)cfg:配置數(shù)據(jù)model:算法模型數(shù)據(jù)init:初始化的數(shù)據(jù)tb:全部仿真數(shù)據(jù)濾波器系數(shù)激勵信號浮點模型定點模型激勵配置算法模型配置 算法開發(fā)中工具鏈的使用 編寫結(jié)構(gòu)化的MATLAB仿真 MATLAB算法向C算法的映射和遷移 嵌入式開發(fā)環(huán)境下的算法驗證與調(diào)試從Matlab到C 為什么要寫C代碼 寫C代碼有哪些問題要考慮 如何驗證C算法代碼 C算法代碼的結(jié)構(gòu)是怎樣的為什么要寫C代碼 1、C代碼的執(zhí)行速度快(較Matlab) 2、跨平臺移植性好 3、Matlab可以自動把M函數(shù)轉(zhuǎn)化為C代碼 用自動生成的C代碼可以么? 某些時候可以,比如在PC上運行,對執(zhí)行速度要求較低時 自動
16、生成的C代碼可讀性相對較差,不好維護 對高效率運行的需求難以滿足 對嵌入式環(huán)境不太適合 4、所以,我們要自己手工寫C代碼寫C代碼有哪些問題要考慮 數(shù)據(jù)結(jié)構(gòu) 函數(shù)功能的劃分 有效率的標號和尋址策略C算法函數(shù)的數(shù)據(jù)結(jié)構(gòu) 數(shù)據(jù)結(jié)構(gòu)的重要性 設(shè)計良好的數(shù)據(jù)結(jié)構(gòu)能夠提高代碼效率 例如,重用一些已經(jīng)計算出來的數(shù)據(jù),避免再次計算浪費CPU 例如,利于代碼算法的人工維護 變量類型的劃分 全局變量、常量 局部變量 內(nèi)存堆和結(jié)構(gòu)體變量 如何劃分需要根據(jù)特定目標應用,多看優(yōu)秀的開源算法代碼積累經(jīng)驗 可參考 杜偉韜 編寫的“規(guī)范化的 C算法代碼結(jié)構(gòu)”數(shù)據(jù)結(jié)構(gòu)圖Libmad的一部分數(shù)據(jù)結(jié)構(gòu)例子,這種圖表有利于對代碼進行
17、認識和維護struct mad_stream streamunsigned char const *bufferunsigned char const *bufendunsigned longskiplenintsyncunsigned long freerateunsigned char const *this_frameunsigned char const *next_framestruct mad_bitptrptrstruct mad_bitptranc_ptrunsigned intanc_bitlenunsigned char(*main_data)MAD_BUFFER_MDLE
18、Nunsigned intmd_lenintoptionsenum mad_errorerrorstruct mad_frameframestruct mad_headerheaderintoptionsmad_fixed_tsbsample23632mad_fixed_t(*overlap)23218struct mad_synthsynthmad_fixed_tfilter222168unsigned intphasestruct mad_pcmpcmstruct mad_bitptranc_ptrunsigned char const*byteunsigned shortcacheuns
19、igned shortleftstruct mad_headerheaderenum mad_layerlayerenum mad_modemodeintmode_extensionenum mad_emphasisemphasisunsigned longbitrateunsigned intsamplerateunsigned shortcrc_checkunsigned shortcrc_targetintflagsintprivate_bitsmad_timer_tdurationstruct*syncstruct mad_streamstreamstruct mad_framefra
20、mestruct mad_synthsynthstruct mad_bitptrptrunsigned char const*byteunsigned shortcacheunsigned shortleftstruct mad_pcmpcmunsigned intsamplerateunsigned shortchannelsunsigned shortlengthmad_fixed_tsamples21152函數(shù)功能的劃分 重復使用的代碼包裝到一個函數(shù)里 不同功能的代碼包裝到不同的函數(shù)里 區(qū)分Init、Run和Close功能的函數(shù) 合理掌握函數(shù)的代碼尺寸 盡量不要太大,尤其是超出你的思考范
21、圍的標號和尋址的策略 什么是標號? 區(qū)分算法理論概念上的標號描述與實際算法代碼中的尋址策略 概念上的標號描述是為了更好理解 代碼中的尋址策略是為了更有效率 例如FIR濾波器 概念上是個移位寄存器 實際代碼里會真正移動數(shù)據(jù)么? 那么如何做到移位的效果呢? 答案:不移動數(shù)據(jù),移動指針30)()()(iihinxnyDDDh(0)h(1)h(2)h(3)x(n)x(n-1)x(n-2)x(n-3)y(n)x(3)x(2)x(1)x(0)h(0)h(1)h(2)h(3)x(3)x(2)x(1)x(4)x(3)x(2)x(5)x(4)提問 在C版本的FIR中,設(shè)有4個數(shù)據(jù)要移位寄存 用1維數(shù)組存儲數(shù)據(jù)
22、最新的數(shù)據(jù)和最老的數(shù)據(jù)的位置關(guān)系是怎樣的。 設(shè)最新的數(shù)據(jù)下標是I,那么最老的數(shù)據(jù)的下標K和I的關(guān)系是什么? 在C代碼中用什么表達式通過I計算K?x(3)x(2)x(1)x(0)h(0)h(1)h(2)h(3)x(3)x(2)x(1)x(4)x(3)x(2)x(5)x(4)標號和尋址的總結(jié) 概念上的標號系統(tǒng)是給理論算法和數(shù)學用的 代碼中的尋址策略是概念上標號系統(tǒng)的具體化,但是要有效率和適應處理器情況 好的尋址策略有時會很重要 利用訪問的局部性,增加Cache命中率 提高運算的并發(fā)性,利用更多的計算單元(尤其是對于SIMD,VLIW結(jié)構(gòu)的CPU))(2)( 1)()2/()2/()(2 )()()
23、( 112/012/0nynynyNihNinxnyihinxnyNiNi例如:分成兩部分計算代碼尋址策略對緩存命中的影響)(2)( 1)()2/()2/()(2 )()()( 112/012/0nynynyNihNinxnyihinxnyNiNi)(2)( 1)() 12() 12()(2 )2()2()( 112/012/0nynynyihinxnyihinxnyNiNi串行計算的CPU上,哪個算法Cache命中率高如何驗證C算法代碼 在目標板子或系統(tǒng)中實際運行 在PC上面用數(shù)據(jù)文件的方法 嵌入到Matlab里面跑混合仿真提問:你認為以上的這些手段各有什么利弊?提示,從觀測數(shù)據(jù)的精細程度,
24、分析數(shù)據(jù)的難易程度,評價實時性效果,評價算法的真實應用效果的角度來考慮。 算法開發(fā)中工具鏈的使用 編寫結(jié)構(gòu)化的MATLAB仿真 MATLAB算法向C算法的映射和遷移 嵌入式開發(fā)環(huán)境下的算法驗證與調(diào)試嵌入式環(huán)境下的算法開發(fā) 資源受限的嵌入式環(huán)境 目標處理器上的軟件仿真 硬件系統(tǒng)中的實時調(diào)試資源受限的嵌入式環(huán)境 內(nèi)存容量小 處理器的片內(nèi)存儲器、板載存儲器都比較小 裝不下很多的測試數(shù)據(jù) 平臺功能有限 不方便在目標系統(tǒng)上運行復雜的結(jié)果分析算法 I/O能力有限 不方便把大量的數(shù)據(jù)實時傳送給PC機進行分析目標處理器上的軟件仿真 優(yōu)點 有充足的虛擬出來的存儲器資源 和PC環(huán)境交換數(shù)據(jù)比較快(應用軟件之間交換數(shù)據(jù)) 方便用MATLAB進行結(jié)果分析和評價 局限性 通常不帶Cache命中的仿真,導致真實度降低 只能看到算法代碼的執(zhí)行速度,無法驗證I/O交互的效率,比如無法仿真DMA的過程硬件系統(tǒng)中的實時調(diào)試 實時性和數(shù)據(jù)正確性的矛盾 監(jiān)測數(shù)據(jù)需要消耗CPU和RAM資源 消耗了資源會影響實時性 優(yōu)點 反映最真實的算法性能,包括Cache Miss 帶有I/O交互和DMA,能夠反映出實時性 局限性 數(shù)據(jù)的監(jiān)測難度較大 不方便進行數(shù)據(jù)分析沒有銀彈,但有策略 沒有萬能的調(diào)試方法 但是 調(diào)試的策略是不變的 望遠鏡和顯微鏡并用的方法 采用宏觀的觀測、評價方法定位(包括猜測?)到出現(xiàn)問題的模塊 采
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度農(nóng)藥農(nóng)膜國際市場拓展合同4篇
- 2025年度農(nóng)產(chǎn)品溯源體系建設(shè)項目合同4篇
- 二零二五年度徹磚勞務(wù)分包合同節(jié)能環(huán)保技術(shù)要求4篇
- 2024年度青海省公共營養(yǎng)師之二級營養(yǎng)師題庫檢測試卷A卷附答案
- 2024年度黑龍江省公共營養(yǎng)師之三級營養(yǎng)師模擬考試試卷B卷含答案
- 2024年度黑龍江省公共營養(yǎng)師之三級營養(yǎng)師基礎(chǔ)試題庫和答案要點
- 2024-2025高中政治第四單元當代國際社會第10課維護世界和平促進共同發(fā)展第1框和平與發(fā)展:時代的主題隨堂作業(yè)含解析新人教版必修2
- 2024年度陜西省公共營養(yǎng)師之四級營養(yǎng)師題庫綜合試卷B卷附答案
- 專業(yè)筆譯服務(wù)合同2024年版
- 2025年度餐飲業(yè)廚師承包合同示范文本2篇
- 河北省邯鄲市永年區(qū)2024-2025學年九年級上學期期末考試化學試卷(含答案)
- 交通運輸行政執(zhí)法程序規(guī)定培訓課件
- 海洋垃圾處理行業(yè)可行性分析報告
- 2024屆高考英語詞匯3500左右
- 三兄弟分田地宅基地協(xié)議書范文
- 實體瘤療效評價標準RECIST-1.1版中文
- 企業(yè)新春茶話會PPT模板
- GB/T 19185-2008交流線路帶電作業(yè)安全距離計算方法
- DIC診治新進展課件
- 公路工程施工現(xiàn)場安全檢查手冊
- 1汽輪機跳閘事故演練
評論
0/150
提交評論