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

下載本文檔

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

文檔簡(jiǎn)介

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

2、傳播損耗可寫(xiě)作:Lo=(4 兀 d)A2/ 入 A2取其對(duì)數(shù)得(其中入=c/f代入后取對(duì)數(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>>入(豹工作波長(zhǎng))時(shí),Lbf可表示為: 字串6 Lbf = 32.5 20lg f (MHz ) 20lgd (km)EIRPEIRP(Effective Isotropic Radiated Power)有效全向輻射功率EIRP也稱(chēng)為等效全向輻射功率,它的定義是地球站或衛(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是一個(gè)考征功率絕對(duì)值的值,計(jì)算公式為: 10lgP (功率值/1mw )。例1如果發(fā)射功率 P為1mw,折算為dBm后為0dBm。例2對(duì)于40W的功率,按dBm單位進(jìn)行折算后的值應(yīng)為: 10lg (40W/1mw)=10lg (40000) =10lg4+10lg10+10lg1000=46dBm。2、dBi 和 dBd dBi和dBd是考征增益的值(功率增益),兩者都是一個(gè)相對(duì)值,但參考基準(zhǔn)不一樣。dBi的參考基準(zhǔn)為全方向性天線,d

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

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

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

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

9、同的 庫(kù))(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) / 測(cè)試是否啟動(dòng) 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)用程序開(kāi)發(fā)環(huán)境之一,開(kāi)發(fā)環(huán)境強(qiáng)大,開(kāi)發(fā)的程序執(zhí)行 速度快。但在科學(xué)計(jì)算方面函數(shù)庫(kù)顯得不夠豐富、讀取、顯示數(shù)據(jù)圖形不方便。Matlab是一款將數(shù)值分析、矩陣計(jì)算、信號(hào)處理和圖形顯示結(jié)合在一起,包含大量 高度集成的函數(shù)可供調(diào)用,適合科學(xué)研究、工程設(shè)計(jì)等眾多學(xué)科領(lǐng)域使用的一種簡(jiǎn) 潔、高效的

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

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

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

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

16、在相關(guān)文件中加入一行:#include "enging.h”,該文件包含了引擎 API函數(shù)的說(shuō)明和所需數(shù)據(jù)結(jié)構(gòu)的定義??梢栽?VC中調(diào)用的引 擎函數(shù)分別如下:3.1引擎的打開(kāi)和關(guān)閉engOpen打開(kāi) Matlab engine函數(shù)聲明:Engine *engOpen(const char *startcmd);參數(shù)startcmd是用來(lái)啟動(dòng)Matlab引擎的字符串參數(shù),在 Windows操作系統(tǒng)中只 能為NULL。函數(shù)返回值是一個(gè)Engine類(lèi)型的指針,它是在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ā)生錯(cuò)誤。例如,通常用來(lái)打開(kāi)/關(guān)閉Matlab引擎的代碼如下:Engine *ep; / 定義 Matlab 引擎指針。if (!(ep=engOpen(NULL) / 測(cè)試是否啟動(dòng) 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說(shuō)明執(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為用來(lái)保存輸出結(jié)構(gòu)的緩沖區(qū),n為最大保存的 字符個(gè)數(shù),通常就是緩沖區(qū) p的大小。該函數(shù)執(zhí)行后,接下來(lái)的engEvalString函數(shù)所引起的命令行輸出結(jié)果會(huì)在緩沖區(qū)p中保存。如果要停止保存,只需調(diào)用代碼:engOutputBuffer(ep, NULL, 0)。3.4讀寫(xiě)Matlab數(shù)據(jù)3.4.1從Matlab引擎工作空間中獲取變量。mxArray *engGetVariable(Engine *ep, const char *name);參數(shù)ep為打開(kāi)的Matlab引擎指針,name為以字符串形式指定的數(shù)組名。函數(shù)返回值是指向name數(shù)組的指針,類(lèi)型為 m

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

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

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

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

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

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

26、是列數(shù)。對(duì)于多維數(shù)組來(lái)說(shuō)是從第2維到最后一維的各維元素個(gè)數(shù)的乘積。要獲得某一特定維的元素個(gè)數(shù),則要用函數(shù):const int *mxGetDimensions(const mxArray *array_ptr);矩陣來(lái)說(shuō),用 mxGetM和mxGetN兩個(gè)函數(shù)就可以了。另外還可以通過(guò)mxGetNumberOfDimensions來(lái)獲得數(shù)組的總的維數(shù),用mxSetM、mxSetN設(shè)置矩陣的行數(shù)和列數(shù),函數(shù)說(shuō)明如下: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ù)組類(lèi)型在對(duì)mxArray類(lèi)型的變量進(jìn)行操作之前,可以驗(yàn)證以下其中的數(shù)組的數(shù)據(jù)類(lèi)型, 比如是否為double數(shù)組、整數(shù)、字符串、邏輯值等,以及是否為某種結(jié)構(gòu)、類(lèi)、或 者是特殊類(lèi)型,比如是否為空數(shù)組,是否為 inf、NaN等。常見(jiàn)的判斷函數(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ù)比較簡(jiǎn)單,意義自明,不再解釋。4.2.3管理mxArray數(shù)組的數(shù)據(jù)對(duì)于常用的double類(lèi)型的數(shù)組,可以用mxGetPr和mxGetPi兩個(gè)函數(shù)分別獲得 其實(shí)部和虛部的數(shù)據(jù)指針,這兩個(gè)函數(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 的虛部指針這樣,就可以通過(guò)獲得的指針對(duì)mxArray類(lèi)型的數(shù)組中的數(shù)據(jù)進(jìn)行讀寫(xiě)操作例如可以用函數(shù)engGetVariable從Matlab工作空間讀入 mxArray類(lèi)型的數(shù)組,然后 用mxGetPr和mxGetPi獲得數(shù)據(jù)指針,對(duì)并其中的數(shù)據(jù)進(jìn)行處理,最后調(diào)用 engPutVariable函數(shù)將修改后的數(shù)組重新寫(xiě)入到Matlab工作空間。具體實(shí)現(xiàn)見(jiàn)第5節(jié)程序?qū)嵗?.程序?qū)嵗龑?duì)大部分軟件研發(fā)人員來(lái)說(shuō)利用VC編程方便、高效,但是要顯示數(shù)據(jù)圖形就不那么容易了,這時(shí)候不防借助Matlab引擎輔助畫(huà)圖做數(shù)據(jù)分析。下面通過(guò)實(shí)例演示如何利用

30、VC調(diào)用Matlab繪圖,程序的主要功能是在 VC中對(duì)數(shù)組x計(jì)算函數(shù)值y = sin(x) log(x),然后調(diào)用Matlab繪制y對(duì)x的圖形。在VC中新建工程,編寫(xiě)代碼如下:#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)/ 測(cè)試是否啟動(dòng) Matlab 引擎成功。cout <<"Can't start Matlab engine!" <<endl;exit(1);定義mxArray,為行

溫馨提示

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

評(píng)論

0/150

提交評(píng)論