?? matcom.html
字號:
<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><meta name="GENERATOR" content="Microsoft FrontPage 4.0"><meta name="ProgId" content="FrontPage.Editor.Document"><title>New Page 1</title></head><body background="../images/backr.gif"><table width="755" border="0" cellPadding="0" cellSpacing="0" height="100"> <tr> <td height="81" width="123"><img border="0" src="../images/3333.gif" width="144" height="80"></td> <td height="81" width="628"> <div align="center"> <img border="0" src="../images/title.gif" width="471" height="60"> </div> </td> </tr></table><p><font size="2">您的位置>></font><a href="http://www.sxren.com"><font size="2">山西人首頁</font></a><font size="2">>><a href="../../index.htm">軟件教程</a>>><a href="../vb.htm">程序設計</a>>><a href="../cxoth2.htm">其它</a></font><br> <br></p> <table width="81%" border="0" align="center"> <tr> <td valign="top" height="1688"> <table border="0" width="100%"> <tr valign="top"> <td height="1669"> <p align="center"><font size="3" face="宋體"><strong><font size="4" color="#0000FF">Matcom:Matlab與C</font></strong><font size="4" color="#0000FF"><sup><strong>++</strong></sup><strong>結合的有效途徑</strong></font></font></p> <p align="center"><font size="3" face="宋體">林 嵐<sup><b>*</b></sup> 周云波 楊玉星 林家瑞</font></p> <p align="left"> </p> <p align="left"><font size="3"><strong>1 </strong></font><font size="3" face="宋體"><strong>工程設計軟件Matlab特點分析</strong></font><font size="3"><br> Matlab是MathWorks公司于1982年推出的一套高性能的數值計算和可視化軟件。它集數值分析、矩陣運算、信號處理和圖形顯示于一體,構成了一個方便、界面友好的用戶環境。它還包括了ToolBox(工具箱)的各類問題的求解工具,可用來求解特定學科的問題。其特點是:<br> (1)可擴展性:Matlab最重要的特點是易于擴展,它允許用戶自行建立指定功能的M文件。對于一個從事特定領域的工程師來說,不僅可利用Matlab所提供的函數及基本工具箱函數,還可方便地構造出專用的函數,從而大大擴展了其應用范圍。當前支持Matlab的商用Toolbox(工具箱)有數百種之多。而由個人開發的Toolbox則不可計數。<br> (2)易學易用性:Matlab不需要用戶有高深的數學知識和程序設計能力,不需要用戶深刻了解算法及編程技巧。<br> (3)高效性:Matlab語句功能十分強大,一條語句可完成十分復雜的任務。如fft語句可完成對指定數據的快速傅立葉變換,這相當于上百條C語言語句的功能。它大大加快了工程技術人員從事軟件開發的效率。據MathWorks公司聲稱,Matlab軟件中所包含的Matlab源代碼相當于70萬行C代碼。<br> 由于Matlab具有如此之多的特點,在歐美高等院校,Matlab已成為應用于線性代數、自動控制理論、數理統計、數字信號處理、時間序列分析、動態系統仿真等高級課程的基本教學工具;在研究單位、工業部門,Matlab也被廣泛用于研究和解決各種工程問題。當前在全世界有超過40萬工程師和科學家使用它來分析和解決問題。<br> 然而Matlab自身所存在的某些缺點限制了它的應用范圍。<br> (1)Matlab是一種解釋性語言,因此它的實時效率是相當差的。例如在筆者所從事的一個心電信號處理項目中,采用Matlab語言來處理5分鐘的心電數據,在486/66系統機上需要25分鐘,而同樣的算法,用C語言實現,僅需30多秒。由此可見,Matlab的語言執行效率是比較低的。<br> (2)Matlab程序不能脫離其環境運行,因此它不能被用于開發商用軟件。<br> (3)Matlab程序可以被直接看到程序的源代碼,因而不利于算法和數據的保密性。</font></p> <p align="left"><font size="3"><strong>2 </strong></font><font size="3" face="宋體"><strong>Matcom:Matlab與C</strong><sup><strong>++</strong></sup><strong>的完美結合</strong></font><font size="3"><br> MathTools公司推出的Matcom(可于http://www.mathtools.com處獲取)可以說是以上問題的完美解決。它可將Matlab的源代碼譯成同等功能的C<sup>++</sup>源碼。既保持了Matlab的優良算法,又保持了C<sup>++</sup>的高執行效率。<br> 下面將詳細介紹如何使Matlab與C<sup>++</sup>接口。<br> 運行環境:<br> Matcom 3.0<br> Matlab 5.1<br> Visual C<sup>++</sup> 5.0<br> 中文Windows 95<br> PC:486/66<br> (1)首先應設置Matcom所對應的編譯器類型、數據類型。<br> (2)將你所需要的.M文件翻譯成C源碼。<br> 在這里將用一個簡單的濾波器程序作為范例。<br> Matlab源程序:<br> Lin.m<br> <br> b=[1 2 1];<br> a=[1 -1.58 0.64];n=50; <br> x=[1, ones(1,n-1)];<br> y=filter(b,a,x);<br> plot(y./70,'*');<br> hold on<br> plot(x,'.');<br> grid;<br> <br> 下面給出了經Matcom翻譯后的C<sup>++</sup>源程序。<br> Lin.cpp<br> <br> M<double> b("b",0,0); <br> M<double> a("a",0,0); <br> M<double> n("n",0,0);<br> M<double> x("x",0,0); <br> M<double> y("y",0,0);<br> b=(BR(1.0),2.0,1.0);<br> a=(BR(1.0),-1.58,0.64);<br> n=50.0;<br> x=(BR(1.0),ones(1.0,n-1.0));<br> y=filter(b,a,x);<br> plot(rdivide(y,70.0),TM("*"));<br> hold(TM("on"));<br> plot(x,TM("."));<br> grid();<br> (3)Visual C<sup>++</sup>環境設置。<br> 在Visual C<sup>++</sup>中的"Project / Settings / C, C<sup>++</sup> / Preprocessor /Additional include subdirectories"中填入當前Matcom所處的路徑.。(如"c:\matcom\")在Visual C<sup>++</sup>中的工程窗口處" "Project / Add to Project / Files".加入mlibvc0.lib庫文件。<br> (4)修改C<sup>++</sup>源代碼。<br> 注意:<br> ①在頭文件處應包含matlib.h.<br> #define MLIB 0<br> #include "matlib.h."<br> ②在類成員函數CMfcApp::InitInstance中調用. InitM啟動對Matlab函數的調用。<br> BOOL CEcgstarApp::InitInstance()<br> {<br> TRACE0("initM\n");<br> initM(stin,stout,sterr);<br> ......<br> }<br> ③在類構造函數CMfcApp::CMfcApp.中不要調用任何Matlab函數<br> ④在類構造函數CMfcApp::~CmfcApp中調用exitM結束對Matlab函數的調用。<br> CEcgstarApp::~CEcgstarApp()<br> {<br> exitM();<br> <br> }<br> ⑤在程序中合適的位置插入經Matcom翻譯過后的C<sup>++</sup>源碼。<br> ⑥編譯工程文件,就可得到你所需的結果。</font></p> <p align="left"> </p> </td> </tr> </table> </td> </tr></table><p> <a href="../cxoth2.htm"><img border="0" src="../images/exit.gif" align=right width="60" height="45"></a> </p></body></html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -