Case4:Matlab與STK聯(lián)調(diào)
????之前我們對(duì)STK的使用方法進(jìn)行了一些簡(jiǎn)單的介紹,不難看出STK作為仿真軟件的功能還是非常強(qiáng)大的,內(nèi)置的一些功能和特點(diǎn)讓我們?cè)诜抡鏁r(shí)能夠快速的搭建場(chǎng)景,非常便利。但是相應(yīng)的,高度集成使得STK在靈活性方面做出了許多犧牲。例如在仿真結(jié)果的可視化處理方面,STK只有一些內(nèi)置的樣式和坐標(biāo)樣式,如果想要的圖像沒有內(nèi)置,單憑STK可能就無法實(shí)現(xiàn)了。因此,STK也提供了方法能夠與我們常用的編程語言進(jìn)行交互,包括C#、python、Matlab等。這次主要對(duì)Matlab與STK聯(lián)合仿真進(jìn)行簡(jiǎn)單的介紹。

交互方法
????STK提供了兩種與Matlab進(jìn)行交互的方法。一種是通過Matlab Connector組件的方法,這種方法需要比較復(fù)雜的環(huán)境配置,STK官方已經(jīng)逐漸不采用這種方法了。另外一種則是通過COM(對(duì)象模型組件)進(jìn)行交互,是一種相對(duì)Connector來說更加便利的方式。因此這次也主要介紹這種互聯(lián)方式。

STK對(duì)象模型
? ?STK仿真軟件整體建立在一個(gè)概念上,也就是STK對(duì)象模型。STK對(duì)象模型是是一個(gè)COM庫,包含了所有的STK對(duì)象,同時(shí)也包含了整個(gè)應(yīng)用程序所有的類型、接口、事件以及類結(jié)構(gòu)等,通過STK對(duì)象模型以及各種組件能夠方便的實(shí)現(xiàn)自定義解決方案?;谶@種思想,STK的用戶界面本身就是基于STK對(duì)象模型進(jìn)行設(shè)計(jì)的,而通過編程語言來與STK交互,也是在STK對(duì)象模型的基礎(chǔ)上進(jìn)行的。因此這里有一個(gè)非常重要的概念:當(dāng)我們?cè)O(shè)計(jì)交互程序時(shí),STK軟件本身的用戶界面就是一個(gè)非常好的指南。
????這次的文檔,目的主要是對(duì)如何進(jìn)行Matlab與STK聯(lián)合仿真進(jìn)行介紹,而非著重于實(shí)現(xiàn)某個(gè)具體的實(shí)例,盡管也會(huì)通過實(shí)例進(jìn)行舉例,但是更多的語法、屬性、方法等實(shí)際的實(shí)現(xiàn)需要具體的參照STK所提供的核心編程庫,并且這個(gè)庫也并不是非常完備,很多類、對(duì)象的內(nèi)部實(shí)現(xiàn)是無法訪問的,所以參考用戶界面進(jìn)行編程才非常重要。
? 那么基于這個(gè)思想,我們終于可以開始進(jìn)行實(shí)際編程了。

如何參考用戶界面
????假如現(xiàn)在場(chǎng)景中存在一個(gè)Facility對(duì)象,同時(shí)我們想要更改這個(gè)對(duì)象在圖形窗口中的標(biāo)簽,應(yīng)該如何進(jìn)行操作?首先,查詢STK給出的核心代碼庫,搜索Facility,找到IAgFacility,可以看到Facility對(duì)象的結(jié)構(gòu)如下:

????點(diǎn)擊Graphics標(biāo)簽頁,可以看到包含了以下屬性:

????那么LabelName屬性就是我們需要修改的目標(biāo)屬性。點(diǎn)進(jìn)LabelName也可以看到這是一個(gè)可讀寫屬性。那么轉(zhuǎn)化為編程語言應(yīng)該是:
????但這樣的語句實(shí)際執(zhí)行起來將會(huì)報(bào)錯(cuò),編譯器會(huì)提示你:
????這個(gè)時(shí)候我們可以打開STK,在用戶界面進(jìn)行查看。在用戶界面里如果想編輯標(biāo)簽顯示,應(yīng)該在下面這個(gè)界面進(jìn)行操作:

????可以看到Label上方還有一個(gè)勾選框,勾選之后將會(huì)綁定使用對(duì)象實(shí)例的名稱作為標(biāo)簽,因此這時(shí)候Label屬性是一個(gè)只讀屬性了。所以我們還需要對(duì)這個(gè)屬性進(jìn)行修改。不難看出這個(gè)屬性應(yīng)該是UseInstNameLabel,轉(zhuǎn)化為編程語言應(yīng)該是:

實(shí)例介紹
????接下來我們可以進(jìn)行一個(gè)簡(jiǎn)單實(shí)例的實(shí)現(xiàn)來進(jìn)行練習(xí)。通過這個(gè)實(shí)例,可以將仿真編程推廣到任何你想要的場(chǎng)景,并且能夠在面對(duì)大量仿真任務(wù)時(shí)進(jìn)行自動(dòng)實(shí)現(xiàn)。