自由空間是指相對介電常數(shù)和相對導(dǎo)磁率都為1_第1頁
自由空間是指相對介電常數(shù)和相對導(dǎo)磁率都為1_第2頁
自由空間是指相對介電常數(shù)和相對導(dǎo)磁率都為1_第3頁
自由空間是指相對介電常數(shù)和相對導(dǎo)磁率都為1_第4頁
自由空間是指相對介電常數(shù)和相對導(dǎo)磁率都為1_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、自由空間是指相對介電常數(shù)和相對導(dǎo)磁率都為1的均勻介質(zhì)所存在的空間,它是一個理想的無限大的空間,是為簡化問題研究而提出的一種科學(xué)抽象。自由空間無線電波傳播, 僅考慮由能量擴(kuò)散引起的損耗,即接收機(jī)和發(fā)射機(jī)之間是無任何阻擋的視距路徑時,傳播損耗!假定在自由空間中,設(shè)在原點(diǎn) O有一輻射源,均勻地向各方向輻射,輻射功率為Pt,則距輻射源d處的能流密度為:S=Pt/(4兀d*d) 若接收天線有效面積為入=入*入*D/4式中入為工作波長,D為天線的方向性系數(shù),對于各向同性的大線 D=1,則接收機(jī)輸入功率Pr=S*A =Pt*入*入*D/(4兀d)A2通常定義發(fā)射功率與接收功率的比值為傳播損耗。所以,自由空間

2、傳播損耗可寫作:Lo=(4 兀 d)A2/ 入 A2取其對數(shù)得(其中入=c/f代入后取對數(shù)10Lg(Lo)Lo=20Lg(4 兀 /c) 20Lgf 20Lgd=20Lg(4 兀 /3乂10人8) 20Lg(f(MHz)x10A6) 20Lg(d(km)x10A3)=20Lg(4 兀 /3)-160 20Lgf 120 20Lgd 60=32.45 20Lgf 20Lgd=32.45 20Lgf 20Lgd, d 單位為km , f單位為 MHz自由空間的基本傳輸損耗是指位于自由空間的發(fā)射系統(tǒng)的等效全向輻射功率(EIRP)與接收系統(tǒng)各向同性接收大線所接收到的可用功率之比,通常用Lbf表示。當(dāng)收

3、發(fā)天線之間的距離d>>入(豹工作波長)時,Lbf可表示為: 字串6 Lbf = 32.5 20lg f (MHz ) 20lgd (km)EIRPEIRP(Effective Isotropic Radiated Power)有效全向輻射功率EIRP也稱為等效全向輻射功率,它的定義是地球站或衛(wèi)星的天線發(fā)送出的功率(P)和該大線增益(G)的乘積,即:EIRP=P*G如果用dB計(jì)算,則為EIRP(dBW) = P(dBW) + G(dBW)EIRP表示了發(fā)送功率和大線增益的聯(lián)合效果。拋物面為主反射面 G/T (Gain/Temperature)地面接收系統(tǒng)的品質(zhì)因數(shù)衛(wèi)星電視接收系統(tǒng)的大

4、線增益與接收系統(tǒng)噪聲之比,用分貝表示,若這一值增加,則意味著圖像質(zhì)量提高。利用減小 低噪聲放大器的噪聲溫度和增加接收大線的尺寸均可以提高G/T值。1、dBmdBm是一個考征功率絕對值的值,計(jì)算公式為: 10lgP (功率值/1mw )。例1如果發(fā)射功率 P為1mw,折算為dBm后為0dBm。例2對于40W的功率,按dBm單位進(jìn)行折算后的值應(yīng)為: 10lg (40W/1mw)=10lg (40000) =10lg4+10lg10+10lg1000=46dBm。2、dBi 和 dBd dBi和dBd是考征增益的值(功率增益),兩者都是一個相對值,但參考基準(zhǔn)不一樣。dBi的參考基準(zhǔn)為全方向性天線,d

5、Bd的參考基準(zhǔn)為偶極子,所以兩者略有不同。一般認(rèn)為,表示同一個增益,用 dBi表示出來比用dBd表示出來要大2. 15。例3對于一面增益為16dBd的天線,其增益折算成單位為dBi時,則為18.15dBi(一般忽略小數(shù)位,為18dBi)。例 4 0dBd=2.15dBi。例5 GSM900天線增益可以為 13dBd (15dBi), GSM1800天線增益可以為 15dBd (17dBi)。3、dBdB是一個表征相對值的值,當(dāng)考慮甲的功率相比于乙功率大或小多少個dB時,按下面計(jì)算公式:10lg (甲功率/乙功率)例6甲功率比乙功率大一倍,那么 10lg (甲功率/乙功率)=10lg2=3dB。

6、也就是說,甲的功率比乙的功率大3 dB。例7 7/8英寸GSM900饋線的100米傳輸損耗約為 3.9dB。例8如果甲的功率為 46dBm,乙的功率為 40dBm,則可以說,甲比乙大 6 dB。例9如果甲天線為12dBd,乙天線為14dBd,可以說甲比乙小 2 dB。4、dBc有時也會看到dBc,它也是一個表示功率相對值的單位,與 dB的計(jì)算方法完全一樣。一般來說,dBc是相對于載波(Carrier)功率而言,在許多情況下,用來度量與 載波功率的相對值,如用來度量干擾(同頻干擾、互調(diào)干擾、交調(diào)干擾、帶外干擾等) 以及耦合、雜散等的相對量值。在采用dBc的地方,原則上也可以使用dB替代。dB只是

7、表示一個比值,并不是功率增益的單位!!!5、dBw與dBm 一樣,dBw是一個表示功率絕對值的單位(也可以認(rèn)為是以1W功率為基準(zhǔn)的一個比值),計(jì)算公式為:10log (功率值/1w )。dBw與dBm之間的換算關(guān)系為:0 dBw = 10log1W = 10log1000 mw = 30 dBm。我按如下步驟在 vc中使用matlab引擎:(1) 。啟動 vc6。 0,建立一個 mfc (exe)類型工程 matlabengine。(2) 。在項(xiàng)目建立后,設(shè)置環(huán)境。Tool->options->Diretories 頁面下 Show directories for先選擇 Inclu

8、de Files,輸入路徑: D:PROGRAMSMA TLAB6P5P1EXTERNINCLUDE在選擇Library Files ,輸入路徑:D:PROGRAMSMA TLAB6P5P1EXTERNLIBWIN32MICROSOFTMSVC60(我的 matlab根目錄是 D:PROGRAMSMATLAB6P5P1;這里的設(shè)置對不同工程只需要次)(3) 。打開 Project->Settings->Link 頁面,在 Object/Library modules中加入libmatlb.lib libeng.lib libmx.lib 。(這里對每個工程都要設(shè)置,并且根據(jù)需要選不

9、同的 庫)(4)在工程目錄的view的頭文件中加入#include "engine.h"float CCompute:computerfreewaste(float frequency, int distance)freewaste=32.4+20*log10f(frequency)+20*log10f(distance);return freewaste;float CCompute:computeerror(double error1)mxArray *T = NULL, *d = NULL;Engine *ep; / 定義 Matlab 引擎指針。if (!(ep=e

10、ngOpen(NULL) / 測試是否啟動 Matlab 引擎成功。AfxMessageBox("Can not open the matlab engine!");exit(-1);error0=error1;T = mxCreateDoubleMatrix(1, 1, mxREAL);memcpy(char *) mxGetPr(T), (char *)error,1*sizeof(double);engPutVariable(ep, "x", T);engEvalString(ep,"y=Q(x);");d = engGetVa

11、riable(ep, "y");EbEo=mxGetPr(d);mxDestroyArray(d);mxDestroyArray(T);engClose(ep); /關(guān)閉 Matlab 引擎。 return *EbEo;VC+與Matlab混合編程之引擎操作詳解Visual C+ 是當(dāng)前主流的應(yīng)用程序開發(fā)環(huán)境之一,開發(fā)環(huán)境強(qiáng)大,開發(fā)的程序執(zhí)行 速度快。但在科學(xué)計(jì)算方面函數(shù)庫顯得不夠豐富、讀取、顯示數(shù)據(jù)圖形不方便。Matlab是一款將數(shù)值分析、矩陣計(jì)算、信號處理和圖形顯示結(jié)合在一起,包含大量 高度集成的函數(shù)可供調(diào)用,適合科學(xué)研究、工程設(shè)計(jì)等眾多學(xué)科領(lǐng)域使用的一種簡 潔、高效的

12、編程工具。不過由于 Matlab使用的是解釋性語言,大大限制了它的執(zhí)行 速度和應(yīng)用場合?;?VC和Matlab混合編程是很多熟悉 VC+編程而又需要進(jìn)行 科學(xué)計(jì)算、數(shù)據(jù)仿真的科研人員常用的一種方式,其中最簡單也最直接的方法就是 調(diào)用Matlab引擎。本文以下部分將詳細(xì)介紹通過 VC+6.0調(diào)用Matlab6.5引擎來達(dá) 到VC+與Matlab數(shù)據(jù)共享編程的方法。1.什么是 Matlab引擎所謂Matlab引擎(engine),是指一組Matlab提供的接口函數(shù),支持 C/C+、 Fortran等語言,通過這些接口函數(shù),用戶可以在其它編程環(huán)境中實(shí)現(xiàn)對 Matlab的控 制??梢灾饕δ苡校?打

13、開/關(guān)閉一個 Matlab對話;向Matlab環(huán)境發(fā)送命令字符串; 從Matlab環(huán)境中讀取數(shù)據(jù); 向Matlab環(huán)境中寫入數(shù)據(jù)。與其它各種接口相比,引擎所提供的Matlab功能支持是最全面的。通過引擎方式,應(yīng)用程序會打開一個新的Matlab進(jìn)程,可以控制它完成任何計(jì)算和繪圖操作。對所有的數(shù)據(jù)結(jié)構(gòu)提供100%的支持。同時,引擎方式打開的Matlab進(jìn)程會在任務(wù)欄 顯示自己的圖標(biāo),打開該窗口,可以觀察主程序通過engine方式控制Matlab運(yùn)行的 流程,并可在其中輸入任何 Matlab命令。實(shí)際上,通過引擎方式建立的對話,是將 Matlab以ActiveX控件方式啟動的。在Matlab初次安裝

14、時,會自動執(zhí)行一次:matlab /regserver將自己在系統(tǒng)的控件庫中注冊。如果因?yàn)樘厥庠?無法打開Matlab引擎,可以在Dos命令提示符后執(zhí)行上述命令,重新注冊。2.配置編譯器要在VC中成功編譯Matlab引擎程序,必須包含引擎頭文件 engine.h并引入 Matlab對應(yīng)的庫文件libmx.lib、libmat.lib、libeng.lib。具體的說,打開一個工程后, 做如下設(shè)置(以VC6為例):1)通過菜單工程/選項(xiàng),打開設(shè)置屬性頁,進(jìn)入Directories頁面,在目錄下拉列 表框中選擇 Include files,添加路徑:"C:matlabexternincl

15、ude"(假定 matlab 安裝在 C:matlab 目錄)。2)選擇 Library files,添加路徑:C:matlabexternlibwin32microsoftmsvc60。3)通過菜單工程/設(shè)置,打開工程設(shè)置屬性頁,進(jìn)入Link頁面,在Object/library modules編輯框中,添加文件名 libmx.lib libmat.lib libeng.lib 。以上步驟1)、2)只需設(shè)置一次,而步驟 3)對每個工程都要單獨(dú)設(shè)定,對于其它 C+編譯器如Borland C+ builder,設(shè)置大體相同,不再贅述。3.弓I擎API詳解在調(diào)用Matlab引擎之前,首先應(yīng)

16、在相關(guān)文件中加入一行:#include "enging.h”,該文件包含了引擎 API函數(shù)的說明和所需數(shù)據(jù)結(jié)構(gòu)的定義??梢栽?VC中調(diào)用的引 擎函數(shù)分別如下:3.1引擎的打開和關(guān)閉engOpen打開 Matlab engine函數(shù)聲明:Engine *engOpen(const char *startcmd);參數(shù)startcmd是用來啟動Matlab引擎的字符串參數(shù),在 Windows操作系統(tǒng)中只 能為NULL。函數(shù)返回值是一個Engine類型的指針,它是在engine.h中定義的engine數(shù)據(jù)結(jié) 構(gòu)。EngClose 關(guān)閉 Matlab 引擎函數(shù)聲明:int engClose(

17、Engine *ep);參數(shù)ep代表要被關(guān)閉的引擎指針。函數(shù)返回值為0表示關(guān)閉成功,返回1表示發(fā)生錯誤。例如,通常用來打開/關(guān)閉Matlab引擎的代碼如下:Engine *ep; / 定義 Matlab 引擎指針。if (!(ep=engOpen(NULL) / 測試是否啟動 Matlab 引擎成功。 ( MessageBox("Can't start Matlab engine!"); exit(1); .engClose(ep); /關(guān)閉 Matlab 引擎。3.2向Matlab發(fā)送命令字符串engEvalString 發(fā)送命令讓Matlab執(zhí)行。函數(shù)聲明:in

18、t engEvalString(Engine *ep, Const char *string);參數(shù)ep為函數(shù)engOpen返回的引擎指針,字符串string為要matlab執(zhí)行的命令。函數(shù)返回值為0表示成功執(zhí)行,返回1說明執(zhí)行失敗(如命令不能被 Matlab正 確解釋或Matlab引擎已經(jīng)關(guān)閉了)。3.3獲取Matlab命令窗口的輸出要在VC中獲得函數(shù)engEvalString發(fā)送的命令字符串被 Matlab執(zhí)行后在matlab 窗口中的輸出,可以調(diào)用 engOUtputBuffer函數(shù)。函數(shù)聲明:int engOutputBuffer(Engine *ep, char *p, int n)

19、;參數(shù)ep為Matlab引擎指針,p為用來保存輸出結(jié)構(gòu)的緩沖區(qū),n為最大保存的 字符個數(shù),通常就是緩沖區(qū) p的大小。該函數(shù)執(zhí)行后,接下來的engEvalString函數(shù)所引起的命令行輸出結(jié)果會在緩沖區(qū)p中保存。如果要停止保存,只需調(diào)用代碼:engOutputBuffer(ep, NULL, 0)。3.4讀寫Matlab數(shù)據(jù)3.4.1從Matlab引擎工作空間中獲取變量。mxArray *engGetVariable(Engine *ep, const char *name);參數(shù)ep為打開的Matlab引擎指針,name為以字符串形式指定的數(shù)組名。函數(shù)返回值是指向name數(shù)組的指針,類型為 m

20、xArray* (mxArray數(shù)據(jù)類型在 本文第4節(jié)詳細(xì)簡介)。3.4.2向Matlab引擎工作空間寫入變量。int engPutVariable(Engine *ep, const char *name, const mxArray *mp);參數(shù)ep為打開的Matlab引擎指針,mp為指向被寫入變量的指針,name為變 量寫入后在Matlab引擎工作空間中的變量名。函數(shù)返回值為0表示寫入變量成功,返回值為1表示發(fā)生錯誤。3.5調(diào)用引擎時顯示/隱藏Matlab主窗口默認(rèn)情況下,以engine方式調(diào)用Matlab的時候,會打開 Matlab主窗口,可在 其中隨意操作。但有時也會干擾應(yīng)用程序的

21、運(yùn)行,可用以下設(shè)置是否顯示該窗口。int engSetVisible(Engine *ep, bool value);參數(shù)ep為打開的Matlab引擎指針,value為是否顯示的標(biāo)志,取值true (或1) 表示顯示 Matlab窗口,取值false (或0)表示隱藏 Matlab窗口。函數(shù)返回值為0表示設(shè)置成功,為1表示有錯誤發(fā)生。要獲得當(dāng)前Matlab窗口的顯示/隱藏情況,可以調(diào)用函數(shù):int engGetVisible(Engine *ep, bool *value);參數(shù)ep為打開的Matlab引擎指針,Value為用來保存顯示/隱藏情況的變量(采 用指針方式傳遞)。函數(shù)返回值為0表示

22、獲取成功,為1表示有錯誤發(fā)生。4.數(shù)據(jù)類型mxArray的操作在上節(jié)的Matlab引擎函數(shù)中,所有與變量有關(guān)的數(shù)據(jù)類型都是mxArray類型。數(shù)據(jù)結(jié)構(gòu)mxArray以及大量的mx開頭的函數(shù),廣泛用于Matlab引擎程序和MatlabC數(shù)學(xué)庫中。mxArray是一種很復(fù)雜的數(shù)據(jù)結(jié)構(gòu),與Matlab中的array相對應(yīng),我們只需熟悉Matlab 的array類型和幾個常用的mxArray函數(shù)即可。在VC中,所有和Matlab的數(shù)據(jù)交互都是通過 mxArray來實(shí)現(xiàn)的,在使用 mxArray類型的程序中,應(yīng)包含頭文件 matrix.h,不過在引擎程序中,一般會包含頭 文件engine.h,該文件里面

23、已經(jīng)包含了 matrix.h ,因此無需重復(fù)包含。4.1創(chuàng)建和清除mxArray型數(shù)據(jù)Matlab有很多種變量類型,對應(yīng)于每種類型,基本上都有一個函數(shù)用于創(chuàng)建, 但它們都有相同的數(shù)據(jù)結(jié)構(gòu),就是mxArray。數(shù)組的建立采用 mxCreatexxx形式的函數(shù),例如新建一個 double類型數(shù)組,可 用函數(shù)mxCreateDoubleMatrix ,函數(shù)形式如下:mxArray *mxCreateDoubleMatrix(int m, int n, mxComplexity ComplexFlag);參數(shù)m和n為矩陣的函數(shù)和列數(shù)。ComplexFlag為常數(shù),用來區(qū)分矩陣中元素 是實(shí)數(shù)還是復(fù)數(shù),取

24、值分別為mxREAL和mxCOMPLEX。例如,創(chuàng)建一個3行5列的二維實(shí)數(shù)數(shù)組,可用如下語句:mxArray *T = mxCreateDoubleMatrix(3, 5, mxREAL);對應(yīng)的,要刪除一個數(shù)組 mxDestroyArray ,該函數(shù)聲明如下:void mxDestroyArray(mxArray *array_ptr);參數(shù)array_ptr為要刪除的數(shù)組指針。例如,要刪除上面創(chuàng)建的數(shù)組 T,可用如下語句:mxDestroyArray(T);類似的創(chuàng)建函數(shù)還有:mxArray *mxCreateString(const char *str);創(chuàng)建一個字符串類型并初始化為st

25、r字符串。一般的在VC與Matlab交互中,以上兩種類型就夠了,其它類型數(shù)組的創(chuàng)建這 里不再介紹。4.2管理mxArray數(shù)據(jù)類型4.2.1管理mxArray數(shù)據(jù)大小要獲得mxArray數(shù)組每一維上元素的個數(shù),可以用 mxGetM和mxGetN函數(shù)。其中mxGetM用來獲得數(shù)組第一維的元素個數(shù),對于矩陣來說就是行數(shù)。int mxGetM(const mxArray *array_ptr); / 返回 array_ptr 對應(yīng)數(shù)組第一維的元素個數(shù)(行數(shù))int mxGetN(const mxArray *array_ptr); / 返回 array_ptr 對應(yīng)數(shù)組其它維的元素個數(shù),對于矩陣來說

26、是列數(shù)。對于多維數(shù)組來說是從第2維到最后一維的各維元素個數(shù)的乘積。要獲得某一特定維的元素個數(shù),則要用函數(shù):const int *mxGetDimensions(const mxArray *array_ptr);矩陣來說,用 mxGetM和mxGetN兩個函數(shù)就可以了。另外還可以通過mxGetNumberOfDimensions來獲得數(shù)組的總的維數(shù),用mxSetM、mxSetN設(shè)置矩陣的行數(shù)和列數(shù),函數(shù)說明如下:int mxGetNumberOfDimensions(const mxArray *array_ptr); / 返回?cái)?shù)組的維數(shù)void mxSetM(mxArray *array_p

27、tr, int m); / 設(shè)置數(shù)組為 m 行void mxSetN(mxArray *array_ptr, int n); / 設(shè)置數(shù)組為 n 列4.2.2判斷mxArray數(shù)組類型在對mxArray類型的變量進(jìn)行操作之前,可以驗(yàn)證以下其中的數(shù)組的數(shù)據(jù)類型, 比如是否為double數(shù)組、整數(shù)、字符串、邏輯值等,以及是否為某種結(jié)構(gòu)、類、或 者是特殊類型,比如是否為空數(shù)組,是否為 inf、NaN等。常見的判斷函數(shù)有:bool mxIsDouble(const mxArray *array_ptr);bool mxIsComplex(const mxArray *array_ptr);bool m

28、xIsChar(const mxArray *array_ptr);bool mxIsEmpty(const mxArray *array_ptr);bool mxIsInf(double value);這些函數(shù)比較簡單,意義自明,不再解釋。4.2.3管理mxArray數(shù)組的數(shù)據(jù)對于常用的double類型的數(shù)組,可以用mxGetPr和mxGetPi兩個函數(shù)分別獲得 其實(shí)部和虛部的數(shù)據(jù)指針,這兩個函數(shù)的聲明如下:double *mxGetPr(const mxArray *array_ptr); / 返回?cái)?shù)組 array_ptr 的實(shí)部指針double *mxGetPi(const mxArra

29、y *array_ptr); / 返回?cái)?shù)組 array_ptr 的虛部指針這樣,就可以通過獲得的指針對mxArray類型的數(shù)組中的數(shù)據(jù)進(jìn)行讀寫操作例如可以用函數(shù)engGetVariable從Matlab工作空間讀入 mxArray類型的數(shù)組,然后 用mxGetPr和mxGetPi獲得數(shù)據(jù)指針,對并其中的數(shù)據(jù)進(jìn)行處理,最后調(diào)用 engPutVariable函數(shù)將修改后的數(shù)組重新寫入到Matlab工作空間。具體實(shí)現(xiàn)見第5節(jié)程序?qū)嵗?.程序?qū)嵗龑Υ蟛糠周浖邪l(fā)人員來說利用VC編程方便、高效,但是要顯示數(shù)據(jù)圖形就不那么容易了,這時候不防借助Matlab引擎輔助畫圖做數(shù)據(jù)分析。下面通過實(shí)例演示如何利用

30、VC調(diào)用Matlab繪圖,程序的主要功能是在 VC中對數(shù)組x計(jì)算函數(shù)值y = sin(x) log(x),然后調(diào)用Matlab繪制y對x的圖形。在VC中新建工程,編寫代碼如下:#include <iostream>#include <math.h>#include "engine.h"using namespace std;void main()const int N = 50;double xN,yN;intj = 1;for (int i=0; i<N; i+) / 計(jì)算數(shù)組 x 和 yxi = (i+1);yi = sin(xi) + j * log(xi); /產(chǎn)生一之間的隨機(jī)數(shù)賦給xxi;j *= -1;Engine *ep; /定義 Matlab 引擎指針。if (!(ep=engOpen(NULL)/ 測試是否啟動 Matlab 引擎成功。cout <<"Can't start Matlab engine!" <<endl;exit(1);定義mxArray,為行

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論