




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1九、九、MATLAB編譯器和編譯器和Notebookv編譯編譯器概述器概述v編譯編譯器的安裝和配置器的安裝和配置v創(chuàng)創(chuàng)建建MEX文件文件 v創(chuàng)創(chuàng)建獨(dú)立的外部程序建獨(dú)立的外部程序EXE文件文件vNotebook29.1 編譯器概述編譯器概述 MATLAB編譯器(The MATLAB Compiler,MCC)可以將M文件轉(zhuǎn)化為C或C源代碼,然后進(jìn)一步編譯鏈接成MEX文件或可執(zhí)行程序或共享庫文件。編譯后可以大大提高程序的運(yùn)行效率,甚至可以脫離MATLAB環(huán)境運(yùn)行程序。 編譯器主要包括: 將C源碼文件生成MEX文件的mex編譯器; 將C源碼文件生成可獨(dú)立運(yùn)行文件的mbuild編譯器; 可以將M文件
2、轉(zhuǎn)換成C源碼文件并調(diào)用mex或mbuild編譯器生成MEX文件或exe可執(zhí)行程序的mcc編譯器。9.1.1 編譯器的功能編譯器的功能產(chǎn)生源代碼,進(jìn)而生成產(chǎn)生源代碼,進(jìn)而生成MEX文件文件。 MEX文件可以提高運(yùn)行速度,并且可以隱藏文件算法,避免非法修改源文件。2 . 產(chǎn)生產(chǎn)生C或或C源碼,進(jìn)而生成獨(dú)立的外部應(yīng)用程序(源碼,進(jìn)而生成獨(dú)立的外部應(yīng)用程序(EXE文件)。文件)。 該程序無需MATLAB環(huán)境支持,如果源M文件使用了繪圖指令,則需要圖形庫支持。3. 產(chǎn)生產(chǎn)生C MEX的的S函數(shù)。函數(shù)。加快Simulink中自定義的S函數(shù)模塊的運(yùn)行速度。4. 產(chǎn)生產(chǎn)生C共享庫(動(dòng)態(tài)鏈接庫、共享庫(動(dòng)態(tài)鏈接
3、庫、DLL)或)或C+靜態(tài)庫。靜態(tài)庫。 它們的使用無需MATLAB環(huán)境支持,但需要MATLAB的數(shù)學(xué)庫。39.1.2 編譯器的局限性編譯器的局限性不支持M腳本文件的編譯。不支持用戶自定義的對(duì)象。不支持eval,input,inline等函數(shù)。不支持Java接口。9.2.1 配置配置MATLAB編譯器的前提準(zhǔn)備編譯器的前提準(zhǔn)備1. 計(jì)算機(jī)必須安裝有計(jì)算機(jī)必須安裝有ANSIC/C+編譯器。編譯器。下面任何一種C/C+編譯器均可。l Microsoft Visual C/C+5.0以上版本。l Borland C/C+5.0以上版本。l LCC C (MATLAB自帶,只能用于生成MEX文件)。2.
4、 在安裝在安裝MATLAB時(shí),選中組件時(shí),選中組件l MATLAB Compilerl C/C+ Math Libraryl MATLAB C/C+ Graphics Library9.2 編譯器的安裝和配置編譯器的安裝和配置49.2.2 為產(chǎn)生為產(chǎn)生MEX文件進(jìn)行預(yù)配置文件進(jìn)行預(yù)配置 要實(shí)現(xiàn)從M文件到MEX文件的轉(zhuǎn)換,就必須先對(duì)M編譯器進(jìn)行正確設(shè)置。預(yù)配置包括兩個(gè)過程:一是根據(jù)外部編譯器的類型、軟件位置對(duì)M編譯器進(jìn)行設(shè)置;二是利用MATLAB提供的標(biāo)準(zhǔn)文件對(duì)用戶設(shè)置加以驗(yàn)證。1. 對(duì)對(duì)MATLAB編譯器應(yīng)用程序編譯器應(yīng)用程序mex的配置的配置啟動(dòng)配置:在MATLAB指令窗口運(yùn)行mex-set
5、up 命令mex-setupSelect a compiler: 1 Lcc C version 2.4 in C:MATLAB6P5syslcc 2 Microsoft Visual C/C+ version 6.0 in D:Program FilesMicrosoft Visual Studio 0 None Compiler:2The default options file: D:Documents and SettingsslluApplication DataMathWorksMATLABR13mexopts.bat is being updated from C:MATLAB6
6、P5BINWIN32mexoptsmsvc60opts.bat. Installing the MATLAB Visual Studio add-in . Updated D:Program FilesMicrosoft Visual Studiocommonmsdev98templateMATLABWizard.awx from C:MATLAB6P5BINWIN32MATLABWizard.awx 52. 驗(yàn)證配置的正確性驗(yàn)證配置的正確性 驗(yàn)證分兩步進(jìn)行:首先驗(yàn)證mex命令是否可以將C源碼轉(zhuǎn)換成MEX文件;然后再驗(yàn)證mcc命令是否可以將M文件轉(zhuǎn)換成MEX文件。mcc命令可以在M文件轉(zhuǎn)換成C
7、源碼后,自動(dòng)調(diào)用mex命令,將C源碼轉(zhuǎn)換成MEX文件。 利用MATLAB自帶的yprime.c和yprime.m來驗(yàn)證mex和mcc命令。mex my_yprime.c %由my_yprime.c文件生成my_yprime.dll文件my_yprime(1,1:4) %運(yùn)行my_yprime.dll文件ans= 2.0000 8.9685 4.000 -1.0947(1)驗(yàn)證mex應(yīng)用程序 先將externexamplemex目錄下的yprime.c文件復(fù)制到自己的目錄下,并改名為my_yprime.c。which my_yprime %獲得my_yprime.dll文件的位置信息D:Docu
8、ments and SettingsslluMy DocumentsMATLABMYFILEmexmy_yprime.dllclear my_yprime.dll %刪除my_yprime.dll文件(2)驗(yàn)證mcc應(yīng)用程序 先將externexamplemex目錄下的yprime.m文件復(fù)制到自己的目錄下,并改名為my_yprime_m.m。6mcc-x my_yprime_mmy_yprime_m(1,1:4)ans= 2.0000 8.9685 4.000 -1.0947which my_yprime_mD:Documents and SettingsslluMy DocumentsMA
9、TLABMYFILEmexmy_yprime_m.dll9.2.2 為產(chǎn)生獨(dú)立外部應(yīng)用程序進(jìn)行預(yù)配置為產(chǎn)生獨(dú)立外部應(yīng)用程序進(jìn)行預(yù)配置 要實(shí)現(xiàn)從M文件到獨(dú)立外部應(yīng)用程序的轉(zhuǎn)換,也必須先對(duì)MATLAB編譯器進(jìn)行正確設(shè)置。預(yù)配置包括兩個(gè)過程:一是根據(jù)外部編譯器的類型、軟件位置對(duì)MATLAB編譯器進(jìn)行設(shè)置,同時(shí)對(duì)MATLAB C數(shù)學(xué)函數(shù)庫進(jìn)行選擇;二是利用MATLAB提供的標(biāo)準(zhǔn)文件對(duì)用戶設(shè)置加以驗(yàn)證。1. 對(duì)對(duì)MATLAB編譯器應(yīng)用程序編譯器應(yīng)用程序mbuild的配置的配置啟動(dòng)配置:在MATLAB指令窗口運(yùn)行mbuild-setup 命令mbuild-setupSelect a compiler: 1
10、 Lcc C version 2.4 in C:MATLAB6P5syslcc 2 Microsoft Visual C/C+ version 6.0 in D:Program FilesMicrosoft Visual Studio 0 None Compiler: 2 The default options file: D:Documents and SettingsslluApplication DataMathWorksMATLABR13compopts.bat is being updated from C:MATLAB6P5BINWIN32mbuildoptsmsvc60compp
11、.bat. 72. 驗(yàn)證配置的正確性驗(yàn)證配置的正確性 驗(yàn)證分兩步進(jìn)行:首先驗(yàn)證mbuild命令是否可以將C源碼轉(zhuǎn)換成EXE文件;然后再驗(yàn)證mcc命令是否可以將M文件轉(zhuǎn)換成EXE文件。mcc命令可以在M文件轉(zhuǎn)換成C源碼后,自動(dòng)調(diào)用mbuild命令,將C源碼轉(zhuǎn)換成EXE文件。 利用MATLAB自帶的ex1.c和hello.m來驗(yàn)證mbuild和mcc命令。(1)驗(yàn)證mex應(yīng)用程序 先將externexamplecmath目錄下的ex1.c文件復(fù)制到自己的目錄下,并改名為my_ex1.c。mbuild my_ex1.c %生成my_ex1.exe文件在Windows的DOS窗口運(yùn)行my_ex1.ex
12、e文件查看其正確性。(2)驗(yàn)證mcc應(yīng)用程序 先將externexamplecompiler目錄下的hello.m文件復(fù)制到自己的目錄下,并改名為my_hello.m。mcc -p my_hello.m在Windows的DOS窗口運(yùn)行my_hello.exe文件查看其正確性。D:Documents and SettingsslluMy DocumentsMATLABMYFILEmexmy_ex1 1 3 5 2 4 6 1.0000+7.0000i 4.0000+10.0000i 2.0000+8.0000i 5.0000+11.0000i 3.0000+9.0000i 6.0000+12.0
13、000iD:Documents and SettingsslluMy DocumentsMATLABMYFILEmexmy_ex1Hello,World89.3 創(chuàng)建創(chuàng)建MEX文件文件 創(chuàng)建創(chuàng)建MEX文件有兩種方法文件有兩種方法:l 利用C源碼編輯器編寫C語言MEX文件,經(jīng)過mex命令編譯鏈接得到MEX文件。l 利用M文件編輯器編寫M函數(shù)文件,經(jīng)過mcc命令編譯鏈接得到MEX文件。 MEX文件的優(yōu)點(diǎn)文件的優(yōu)點(diǎn):l 運(yùn)行速度快,利用C代碼實(shí)現(xiàn)循環(huán)體要比MATLAB快很多;l 對(duì)于已存在的C或FORTRAN子程序,可以通過MEX文件在MATLAB環(huán)境中直接調(diào)用,而不必重新編寫M文件 ;l 對(duì)于A/
14、D、D/A卡,或其它PC硬件,可以直接用MEX文件進(jìn)行訪問 ;l 利用MEX文件,可以使用如Windows用戶圖形界面等資源。 9.3.1 C語言語言MEX文件的構(gòu)成文件的構(gòu)成 程序的構(gòu)成主要由入口子程序和計(jì)算功能子程序兩部分組成。void mexFunction( int nlhs, mxArray *plhs, int nrhs, const mxArray*prhs ) /*用來完成MATLAB與計(jì)算子程序之間通信任務(wù)的代碼*/ (1) 入口子程序 入口子程序必須是mexFunction,其構(gòu)成形式為: mexFunction函數(shù)的參數(shù)含義為:nrhs:為輸入?yún)?shù)的數(shù)目。prhs:為輸入
15、參數(shù)數(shù)組,是指針數(shù)組。nlhs:為輸出參數(shù)的數(shù)目。plhs:為輸出參數(shù)數(shù)組,是指針數(shù)組。 9入口子程序的作用是在MATLAB系統(tǒng)與被調(diào)用的外部子程序之間建立通信聯(lián)系。 (2) 計(jì)算功能子程序 計(jì)算功能子程序包含所有的實(shí)際需要完成的功能源代碼,可以是用戶以前所編寫的算法和程序,以函數(shù)的形式存在。 C語言MEX文件必須包含mex.h庫:include”mex.h”。mex.h庫中包含了C語言MEX文件所需要的mex-函數(shù)和matrix.h庫(定義了mx-函數(shù))。 mex-和mx-函數(shù)是MATLAB提供與外界程序接口的函數(shù)。mx-函數(shù)用來實(shí)現(xiàn)MATLAB的矩陣操作;mex-函數(shù)用來實(shí)現(xiàn)從MATLAB
16、環(huán)境中獲取矩陣數(shù)據(jù)并返回信息。9.3.2 C語言語言MEX文件的建立文件的建立timestwo.c#include mex.h“/*計(jì)算功能子程序timestwo,計(jì)算一個(gè)數(shù)的兩倍*/void timestwo(double y, double x) y0 = 2.0*x0;/*入口子程序mexFunction*/void mexFunction( int nlhs, mxArray *plhs, int nrhs, const mxArray *prhs ) double *x,*y; int mrows,ncols;10/* 檢查輸入輸出參數(shù) */ if(nrhs!=1) mexErrMs
17、gTxt(One input required.); else if(nlhs1) mexErrMsgTxt(Too many output arguments); /* 輸入只能是一個(gè)雙精度型的實(shí)數(shù)*/ mrows = mxGetM(prhs0); ncols = mxGetN(prhs0); if( !mxIsDouble(prhs0) | mxIsComplex(prhs0) | !(mrows=1 & ncols=1) ) mexErrMsgTxt(Input must be a noncomplex scalar double.); /* 為輸出參數(shù)創(chuàng)建矩陣,輸出指針指向該矩
18、陣 */ plhs0 = mxCreateDoubleMatrix(mrows,ncols, mxREAL); /* 輸入指針輸出指針賦值 */ x = mxGetPr(prhs0); y = mxGetPr(plhs0); /* 調(diào)用功能子程序 */timestwo(y,x);在MATLAB命令窗口運(yùn)行mex timestwo.cy=timestwo(3)y= 6119.3.3 由由M文件創(chuàng)建文件創(chuàng)建C MEX文件文件 M腳本文件不能編譯成MEX文件,必須把M腳本文件改寫M函數(shù)文件才能進(jìn)行編譯。 利用MATLAB編譯器來由M函數(shù)文件創(chuàng)建MEX文件,使用“mcc x”命令。 %circle.m
19、function circle(x,y,r,varargin) if nargin3 flag=varargin1;endif flag fill(x1*r+x,y1*r+y,b)endaxis square;在MATLAB命令窗口運(yùn)行mcc x circle.mcirclecircle(1,1,2,1)129.4 創(chuàng)建獨(dú)立的外部程序創(chuàng)建獨(dú)立的外部程序EXE文件文件 MEX文件只能在MATLAB環(huán)境中運(yùn)行;而EXE文件可以獨(dú)立于MATLAB環(huán)境運(yùn)行。 用來創(chuàng)建獨(dú)立應(yīng)用程序的源代碼可以是M文件、C語言文件或者這些文件的組合。不管是哪一種文件格式,都應(yīng)該包含有主函數(shù),如C語言的main函數(shù)。 得到
20、的exe文件如果要正常運(yùn)行,需要下列文件:l mbuild編譯得到的bin目錄下的所有文件;l 所調(diào)用的MEX文件;l MATLAB提供的數(shù)學(xué)庫;l MATLAB提供的圖形庫。mcc指令的典型調(diào)用格式(可以利用mcc-?或help mcc查詢幫助):mcc -x filename1 filename2 由M函數(shù)文件得到MEX文件filename1.dllmcc -m filename 由不包含繪圖指令的M文件得到可執(zhí)行的exe文件(c)3. mcc -p filename 由不包含繪圖指令的M文件得到可執(zhí)行的exe文件(c+)4. mcc -B sgl filename 由含繪圖指令的M文件得
21、到可執(zhí)行的exe文件(c)5. mcc -B sglcpp filename 由包含繪圖指令的M文件得到可執(zhí)行的exe文件(c+獨(dú)立應(yīng)用程序)注意:注意:“”與與mcc之間必須有空格!之間必須有空格!13main.m mrank.m%main.m function mainr=mrank(5)%mrank.mfunction r=mrank(n)%向量向量r的每一個(gè)元素代表了一個(gè)魔方方陣的秩的每一個(gè)元素代表了一個(gè)魔方方陣的秩r=zeros(n,1);for k=1:n r(k)=rank(magic(k);end在MATLAB指令窗口運(yùn)行命令mcc -m main mrank %由M文件生成e
22、xe文件在Windows的DOS窗口運(yùn)行D:Documents and SettingsslluMy DocumentsMATLABMYFILEmexmainr= 1 2 3 3 514circle_main.m circle_fun.m%circle_main.mfunction circle_maincircle_fun(1,1,2,1)%circle_fun.mfunction circle_fun(x,y,r,varargin) if nargin3 flag=varargin1;endif flag fill(x1*r+x,y1*r+y,b)endaxis square;在MATLA
23、B指令窗口運(yùn)行命令mcc B sgl circle_main在DOS窗口運(yùn)行:D:Documents and SettingsslluMy DocumentsMATLABMYFILEmexcircle_main159.5 Notebook Notebook(筆記本)是MATLAB與Microsoft Word的完美結(jié)合,使用戶能在Word環(huán)境下靈活地使用MATLAB的數(shù)學(xué)運(yùn)算和可視化功能,營(yíng)造一個(gè)融文字處理、科學(xué)計(jì)算、工程設(shè)計(jì)于一體地工作環(huán)境。9.5.1 Notebook的安裝的安裝 啟動(dòng)MATLAB后,在命令窗口中運(yùn)行指令note-setup根據(jù)自己計(jì)算機(jī)所用Word的版本等,在提示下操作
24、,直到出現(xiàn)“Notebook setup is complete”,則表示安裝結(jié)束。 9.5.2 Notebook的啟動(dòng)的啟動(dòng) 1. 創(chuàng)建創(chuàng)建M-book文件文件(1) 從Word中啟動(dòng)Notebook 選擇Word窗口的菜單“文件”“新建”,在出現(xiàn)的對(duì)話框中,選擇“m-book”,則出現(xiàn)如圖所示的新建對(duì)話框,選擇“m-book”圖標(biāo),按“確定”按鈕。當(dāng)保存文件時(shí),默認(rèn)的文件名為“The MATLAB Notebook v1.doc”。 16(2) 從MATLAB中啟動(dòng)Notebook 在MATLAB命令窗口輸入“notebook”命令,就可以啟動(dòng)Notebook。notebook打開一個(gè)新的
25、M-book文檔notebook FileName打開已存在的M-book文件 FileName應(yīng)包括文件的完整路徑和文件名。 2. M-book的界面的界面M-book的界面比普通的Word多一個(gè)“Notebook”菜單 。9.5.3 Notebook的使用的使用 1. 輸入細(xì)胞(群)的創(chuàng)建和運(yùn)行輸入細(xì)胞(群)的創(chuàng)建和運(yùn)行在Notebook中,凡參與Word和MATLAB之間信息交換的部分,就稱為”細(xì)胞(群)細(xì)胞(群)“。(1) 只創(chuàng)建不運(yùn)行輸入細(xì)胞(群) 在英文狀態(tài)下按普通的文本輸入方式,輸入MATLAB命令,可以是獨(dú)立行或嵌在文本中,然后用光標(biāo)選中,按組合鍵“Alt-D”,或選擇菜單“N
26、otebook”“Define Input Cell”,則所選中的文本形式命令就變成了輸入細(xì)胞。(2) 創(chuàng)建并同時(shí)運(yùn)行輸入細(xì)胞 在英文狀態(tài)下按普通的文本輸入方式,輸入MATLAB命令,然后用光標(biāo)選中,按組合鍵“Ctrl-Enter”,或選擇菜單“Notebook”“Evaluate Cell”,則所選中的文本形式命令就會(huì)自動(dòng)變成輸入細(xì)胞,并得出運(yùn)算結(jié)果,即輸出細(xì)胞。172. 自初始化細(xì)胞及其應(yīng)用自初始化細(xì)胞及其應(yīng)用 自初始化細(xì)胞(AutoInit Cell)與輸入細(xì)胞唯一不同是:自初始化細(xì)胞會(huì)在用戶啟動(dòng)Notebook時(shí)被自動(dòng)送去運(yùn)算,而輸入細(xì)胞則不具備這種功能。 創(chuàng)建自初始細(xì)胞的方法是先將文
27、本形式的MATLAB命令或已存在的輸入細(xì)胞用光標(biāo)選中,然后選擇菜單“Notebook”“Define AutoInit Cell”,則選中的文本形式MATLAB命令就會(huì)自動(dòng)變成AutoInit 格式。 3. 輸出細(xì)胞輸出細(xì)胞 輸出細(xì)胞是MATLAB的輸出結(jié)果,包括數(shù)據(jù)、圖形和出錯(cuò)信息。 輸出數(shù)據(jù)的有效數(shù)字、圖形的大小都可以借助“Notebook”“Notebook Options”菜單項(xiàng)打開的對(duì)話框進(jìn)行設(shè)置。(1)自初始化細(xì)胞的創(chuàng)建 為了避免其它文件或命令窗口中變量的改變影響該文件,保證文件輸入輸出數(shù)據(jù)的一致性,可以用“clear”命令作為該文件的第一個(gè)自初始化細(xì)胞。 (2)工作內(nèi)存的初始化4. 計(jì)算區(qū)計(jì)算區(qū) 計(jì)算區(qū)(Calc Zone)是一個(gè)由文本、輸入細(xì)胞和輸出細(xì)胞組成的連續(xù)區(qū),用于實(shí)現(xiàn)某個(gè)具體的問題。 創(chuàng)建計(jì)算區(qū)的方法是:先選定一個(gè)包含文本、輸入細(xì)胞和輸出細(xì)胞的連續(xù)區(qū),然后選擇菜單“Notebook”“Define Calc Zone”;要運(yùn)行計(jì)算區(qū),可將光標(biāo)置于計(jì)算區(qū)的任何位置,然后選擇菜單 “Notebook”“Evaluate Calc Zone”。 185. 取消定義細(xì)胞(群)取消定義細(xì)胞(群) 取消定義細(xì)胞的方法是,先選定細(xì)胞,然后選擇菜單“Notebook”“Undefine Cells”,或
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高標(biāo)準(zhǔn)廠房租賃安全生產(chǎn)及環(huán)境保護(hù)管理協(xié)議
- 餐飲公司股東投資收益分配合同
- 拆除工程安全責(zé)任及補(bǔ)償協(xié)議范本
- 車輛租賃平臺(tái)傭金分成合同
- 互聯(lián)網(wǎng)教育代理記帳與課程資源整合合同
- 資源開發(fā)項(xiàng)目參股合作協(xié)議范本
- 產(chǎn)權(quán)拍賣合同范本
- 餐飲店拆伙退伙協(xié)議書(合同解除原因)
- 美食街特色餐飲攤位租賃及食品安全保障合同
- 特種礦產(chǎn)資源采礦權(quán)出讓與科研開發(fā)合同
- icao考試圖片題飛行員ICAO描述模板
- 鹽城市區(qū)第Ⅲ防洪區(qū)水環(huán)境綜合治理PPP項(xiàng)目Ⅱ標(biāo)段“6·4”一般基坑坍塌事故調(diào)查報(bào)告
- 電機(jī)振動(dòng)測(cè)定方法及限值振動(dòng)測(cè)定方法
- 濟(jì)南遙墻機(jī)場(chǎng)擴(kuò)建工程航站樓建設(shè)監(jiān)理大綱
- 撥叉綜合課程設(shè)計(jì)
- 七年級(jí)上冊(cè)數(shù)學(xué)知識(shí)點(diǎn)總結(jié)及精編例題1
- 學(xué)校物業(yè)服務(wù)監(jiān)督及處罰辦法
- 心內(nèi)科高危藥物安全管理與指引
- 2012《天津市安裝工程預(yù)算基價(jià)》電氣工程(預(yù)算基價(jià)導(dǎo)出)
- 1104基礎(chǔ)報(bào)表填報(bào)說明(最新)
- 老舊小區(qū)改造技術(shù)標(biāo)-
評(píng)論
0/150
提交評(píng)論