MATLAB 程式設計與應用 |
|
jackkcg
站務副站長 發表:891 回覆:1050 積分:848 註冊:2002-03-23 發送簡訊給我 |
http://www.4book.com.tw/PublisherBookPage/ShowPublisherSingleBookPage.hi?SSN=1030&XYZ=1024 MATLAB 程式設計與應用
作者 / 張智星
初版 / 2000 年 2 月 / 520 頁 / 平裝 / 附光碟
清蔚科技 出版
定價 / 600 元 非會員 570 元 會員 540 元
發表人 - jackkcg 於 2002/09/16 04:16:54
------
********************************************************** 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind |
andersonhsieh
版主 發表:33 回覆:531 積分:439 註冊:2002-06-10 發送簡訊給我 |
|
phototin
初階會員 發表:13 回覆:30 積分:29 註冊:2002-06-15 發送簡訊給我 |
Matlab 交談式矩陣計算語言
---------------------------------------------------------------------
為一直覺式語言及高科技運算環境,
提供核心數學運算能力與進階的圖形工具,
幫助完成資料分析、資料視覺化,以及演算法與應用程式的設計。
全世界有超過40萬的設計工程師與科學家們,
使用MATLAB環境解決其數學、統計、工程研發等高科技運算問題。
主要功能:線性代數、高速運算邏輯能力、廣泛數學功能、
資料分析、二維及三維繪圖、第四代程式語言、
可C與Fortran或做動態連接、物件導向語法、
處理微分方程式之各種演算。
|
asupeduer
初階會員 發表:36 回覆:49 積分:27 註冊:2002-11-08 發送簡訊給我 |
我也看過這本書好幾次,但總覺得不得其門而入
前輩有什麼建議嗎?
因為我不是唸理工出身的 //------------------------------------------------
我常在想,寫程式跟爬格子到底有什麼不同呢???????????
//------------------------------------------------
------
//------------------------------------------------ 我常在想,寫程式跟爬格子到底有什麼不同呢??????????? //------------------------------------------------ |
jackkcg
站務副站長 發表:891 回覆:1050 積分:848 註冊:2002-03-23 發送簡訊給我 |
phototin 大大說的沒錯 MATLAB 程式設計與應用 應該是第四代語言 目前使用於 硬體 繪畫 航空 實驗室 通信信號 等 台灣此相關資料很少 大陸比較多啦 ********************************************************************** http://gbyang.4y.com.cn/matcom1.htm Matcom:Matlab與C++結合的有效途徑 Word檔 http://delphi.ktop.com.tw/loadfile.php?TOPICID=7359895&CC=164605 ********************************************************************** 轉貼(C++Builder調用Matlab的實現方法)參考 ********************************************************************** http://gbyang.4y.com.cn/matlabc.htm 發信人: jackie (jackie), 信區: Delphi_CBuilder
標 題: C++Builder調用Matlab的實現方法
發信站: 交大華緣站 (Sun Nov 7 23:04:37 1999) , 轉信 國防科技大學機電工程與儀器系
張雲洲
---- 摘要:本文簡要敍述了Matlab語言的優點,介紹了在用Borland C++Builder語言開發的
Windows應用程式中,調用matlab語言實現科學計算和圖形繪製的方法。 ---- 關鍵字:C++Builder Matlab調用 混合編程 1. 引言 ---- Matlab是一個高度集成的系統,集科學計算、圖像處理、聲音處理於一體,具有極高的編程
效率。近年來,Matlab已經從最初的“矩陣實驗室”,滲透到科學與工程計算的多個領域,在自
動控制、信號處理、神經網路、模糊邏輯、小波分析等多個方向,都有著廣泛的應用。 ---- Borland C++Builder是一種新穎的視覺化編程語言。在工程應用中,我們一般用
C++Builder語言編寫應用程式,實現交互介面、資料獲取和埠操作等,但C++Builder在數值處
理分析和演算法工具等方面,其效率遠遠低於Matlab語言。在準確方便地繪製資料圖形方面,
Matlab語言更具有無可比擬的優勢。此外,Matlab還提供功能強大的工具箱。但Matlab的缺點是
不能實現埠操作和即時控制。因此,若能將兩者結合運用,實現優勢互補,將獲得極大的效
益。 ---- 本文結合實際介紹了應用Borland C++Builder3.0開發的Windos應用程式中,對Matlab的
調用方法。 ---- 2. C++Builder調用Matlab的實現方案 ---- 2.1 實現思路 ---- 在高版本的Maltab中(如Matlab V4.2)提供了DDE介面,用戶可以通過Windows的DDE通訊
基制實現外部調用。這種實現方式比較簡單,但將增大主程序代碼,影響運行速度。 ---- 在Windows系統中,DLL是一種很特別的可執行文件,可以被多個Windows應用程式同時訪
問,具有固定的共用資料段。該資料段的資料在DLL被Windows下載前會一直保留在記憶體中,因此
可以通過DLL實現用戶程式與Matlab之間的資料傳輸和函數調用。 ---- 具體地說,就是利用Matlab的32位元動態連接庫(DLL),生成相應的可以被C++Builder調用
的DLL,用來提供二者之間的基本支撐環境。只需在用戶程式中載入該DLL,即可實現其資料段的
共用。然後在用戶程式中操作DLL資料段的資料,並通過某種方式在用戶程式中使Matlab執行該
DLL,就可實現用戶程式對Matlab的調用。其形式可以是混合編程或函數調用,非常方便而高
效。 ---- 2.2 實現方式 ---- Matlab提供了可外部連接的DLL文件,通過將其轉換爲相應的Lib文件,並加以必要的設
置,就可以在C++Builder中直接進行Matlab函數調用,實現C++ Builder語言與Matlab語言的混
合編程。 ---- 2.2.1 運行環境要求 ---- 由於Matlab提供的是32位的DLL。其運行環境要求是Matlab V4.2或更高版本。C++Builder
可以進行32位編程,這裏我們採用的是V3.0版本。 ---- 2.2.2 C++Builder下LIB文件的生成 ---- Matlab提供的Def文件允許用戶通過Implib命令生成相應的Lib文件。其命令格式爲: ---- Implib ???.lib ???.def ---- 在< matlab >\extern\include目錄下,提供了如下三個.Def文件: ---- _libeng.def,_libmat.def,_libmx.def ---- 通過上述命令可以生成相應的三個Lib文件。這些Lib文件中包含了可外部調用的Matlab函
數的必要資訊。 ---- 3. C++Builder調用Matlab實現計算和繪圖 ---- 爲清楚起見,作者通過一個簡單的CBuilder常式進行說明。該實例通過調用Matlab實現矩
陣運算並繪製圖形,來演示C++Builder對Matlab的調用。在C++Builder編輯環境中,建立一個新
的表單MyForm,並放置一個按鈕Demo。將工程文件命名爲Try.prj,其主函數爲try.cpp。在主函
數中,我們將使用一個實現Matlab調用的子函數DemoMatlab,作爲按鈕Demo的回應事件。其源代
碼如下: #include < vcl.h >
#pragma hdrstop #include "Unit1.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TMyForm *MyForm; __fastcall TMyForm::TMyForm(TComponent* Owner)
: TForm(Owner)
{
} void __fastcall TMyForm::DemoClick(TObject *Sender)
{
DemoMatlab(); //演示Matlab語言調用
}
---- 爲了調用Matlab中的函數,必須進行必要的設置,將包含這些函數的文件加入工程文件
Try.prj。以下是操作過程: ---- a. 在頭文件中加入Engine.h。其包含了啓動Matlab調用和關閉的函數聲明。 ---- b. 打開Project|Option…對話方塊,點擊Directories/Conditionals 在Include Path中,加入目錄路徑< matlab >\extern\include,該路徑包含了engine.h和
matlab.h等有用的頭文件。 在Library Path中,加入< matlab >\bin和< matlab >\extern\include。這兩個目錄路徑包
含了可外部調用的DLL和LIB文件。
---- c. 點選Project|Add to Project…對話方塊,加入如下庫文件: ---- _libeng.lib,_libmat.lib和_libmx.lib。 ---- 在進行了這些必要的設置之後,我們就可以選用適當的函數來實現目標。 以下是子函數
DemoMatlab的程式碼。 void DemoMatlab
{
Engine *eng; //定義Matlab引擎
char buffer[200]; //定義資料緩衝區
int array[6]={1,2,3,4,5,6};
mxArray *S = NULL, *T = NULL;
engOpen(NULL); //打開MATLAB 引擎 ---① S= mxCreateDoubleMatrix(1,6, mxREAL);
// 産生矩陣變數
mxSetName(S, "S");
memcpy((char *) mxGetPr(S),
(char *) array, 6*sizeof(int));
engPutArray(eng, S); //將變數X置入Matlab的工作空間
engEvalString(eng, "T = S/S.^2;");
//計算
engEvalString(eng, "plot(S, T);");
//繪製圖形
…… ……
engOutputBuffer(eng, buffer, 200);
//獲取Matlab輸出
T = engGetArray(eng, "T");
//獲得計算結果----② engClose(eng);
//關閉Matlab引擎,結束調用
mxDestroyArray(S);
//釋放變數
mxDestroyArray(T);
}
---- 若還需要執行其他功能和任務,那麽按照上面介紹的方法,進行變數聲明後,在①、②處加
寫需要的語句既可。 ---- 當然,使用這種方法調用Matlab不能脫離Matlab環境的支撐。但當我們不需要看到Matlab
的命令視窗時,可將其賦予Swhide屬性而加以隱藏。 ---- 4. 結語 ---- 按照本文介紹的方法來實現C++Builder下應用程式對Matlab的調用,可以充分利用
Matlab強大的科學計算功能和豐富的工具箱,而且具有混合編程、方便高效的優點。這是C++語言
和其他高階語言所無法比擬的。按照本文的方法,我們還可以編寫程式來最充分地利用Matlab的
其他資源,開發滿足自己需要的程式,更有效地完成我們的工作。 --
※ 來源:.交大華緣站WWW bbs.4y.com.cn. [FROM: 202.101.209.157] ********************************************************************** 哈哈 庵不是前輩 我不是唸理工的 很多人都知道庵不會寫程式 我原本想說這是一個超冷凍的書 應該沒人會問 想不到還有人詢問 實在太意外
***************************
我常在想,寫程式跟爬格子到底有什麼不同呢
我也常在想,程式設計師與賣油郎 到底有什麼不同呢 我是認為都一樣啦 一天24小時 生死一瞬間 你賣程式專業 我賣信用的專業 哈哈 建議你順便問問phototin 大大也許會知道更多 3Q3Q 發表人 - jackkcg 於 2002/12/04 02:38:32
------
********************************************************** 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |