亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? c++builder與matlab混合編程 .htm

?? VC與Matlab混合編程文章.
?? HTM
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0044)http://www2.ccw.com.cn/2000/0014/0014b15.asp -->
<HTML><HEAD><TITLE>計算機世界: C++Builder與Matlab混合編程</TITLE><LINK href="/style.css" 
rel=stylesheet type=text/css>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<META content="MSHTML 5.00.3315.2870" name=GENERATOR></HEAD>
<BODY bgColor=#ffffff>
<CENTER>
<TABLE cellPadding=0 cellSpacing=0 width=463>
  <TBODY>
  <TR>
    <TD vAlign=top><BR>
      <P align=right><FONT color=#ff0000><B>2000年4月17日</B></FONT> <BR>
      <CENTER><IMG src="C++Builder與Matlab混合編程 .files/c&amp;l8.gif"></CENTER>
      <P></P>
      <CENTER><FONT color=#0000c0>
      <H2>C++Builder與Matlab混合編程  </H2></FONT>
      <H3>長沙張云洲(xingsha@263.net) </H3>
      <HR>
      </CENTER>
      <P><FONT color=#ffffff>----</FONT> 
      在C++Builder中調用Matlab工具箱函數,有兩種實現方式。一種是基于Matlab環境支持,通過必要的設置實現,筆者在本刊上曾撰文對這種方式進行了專門的闡述。另一種則是完全脫離Matlab環境,通過動態連接庫方式實現對Matlab工具箱函數的調用,這可以通過一種開發平臺Mediva來實現。相對來說,前者的限制因素較多,而后者則較為方便靈活。 

      <H3>一、 Mediva軟件平臺 </H3><FONT 
      color=#ffffff>----</FONT>Mediva是Mathtools公司推出的一種Matlab編譯開發軟件平臺,提供對Matlab程序文件(M文件)的解釋執行和開發環境支持。該軟件有為Borland 
      C++、Visual 
      Basic和Dephi等編程語言開發的不同版本,目前其版本已經到了4.5版,軟件大小僅6.5M,可以通過訪問其站點www.mathtools.com免費下載試用一個月。 

      <P><FONT color=#ffffff>----</FONT>Mediva軟件平臺本身的功能相當強大,提供近千個 
      Matlab的基本功能函數,通過必要的設置,就可以直接實現與C++的混合編程,而不必再依賴Matlab;同時,Mediva還提供編譯轉換功能,能夠將Matlab函數或編寫的Matlab 
      程序轉換為C++形式的DLL,從而實現脫離Matlab環境對Matlab函數和過程的有效調用,這樣就有可能實現對Matlab強大的工具箱函數的利用。 

      <P><FONT 
      color=#ffffff>----</FONT>Mediva的缺點是C++與Matlab混合編寫的應用軟件必須攜帶必要的DLL,從而增大了軟件的體積(約4M),同時也不能對所有的Matlab 
      函數提供支持,例如采用類庫進行設計的部分函數。但盡管如此,對于控制系統計算機設計、分析的工作來說,Mediva仍不失為一個好的工具。 
      <H3>二、 C++Builder直接調用Matlab函數 </H3><FONT 
      color=#ffffff>----</FONT>本文假設已經安裝了Mediva軟件或已經得到必要的兩個動態連接庫mdv4300.dll和ago4300.dll。 

      <P><FONT 
      color=#ffffff>----</FONT>Mediva提供的近千個Matlab基本功能函數,都可以在C++Builder中直接調用。這些函數包括基本的操作、命令、I/O、線性代數、位圖、控制等,基本上可以滿足我們的一般需要。當然其最大的優點就是可以直接在C++ 
      Buider中直接調用而不必考慮安裝龐大的Matlab。 
      <P><FONT color=#ffffff>----</FONT>其實現方式和步驟如下: 
      <P><FONT color=#ffffff>----</FONT>1. Lib文件的生成 
      在Dos下用C++Builder中的Implib.exe,通過如下命令生成mdv4300.lib: 
      <P><FONT color=#ffffff>----</FONT>implib mdv4300.lib mdv4300.dll 
      <P><FONT color=#ffffff>----</FONT>將上述兩個DLL文件和此Lib文件拷貝到當前目錄下。 
      <P><FONT color=#ffffff>----</FONT>2.實現與Matlab的混合編程 
      <P><FONT 
      color=#ffffff>----</FONT>Matlab.h包含了Mediva中所有類型、常量、函數的說明和定義,必須將此頭文件放于程序的第一行。Mediva給出的Matlab函數形式并不特殊,如繪線函數Plot,在Mediva中說明為:Mm 
      DLLI plot(cMm varargin);varargin與Matlab 
      中的意義是一樣的,與輸入變量的個數相對應。所有可以直接使用的函數都在Matlib.h頭文件中定義,而在mdv4300.dll中實現。 
      <P><FONT 
      color=#ffffff>----</FONT>但在C++Builder中使用Mediva提供的Matlab函數的格式,與Matlab編程稍有不同,這主要體現在C++中必須進行必要的說明上。例如我們要用繪線函數Plot來繪制數組x[100]的紅色圖線。在Matlab中調用為Plot(x,‘r');在 
      C++中調用則為:Plot(CL(x),TM(“r")),其中CL是一個關鍵字,是多變量輸入時所必須使用的,用以指明調用的變量;而TM則指明,這是一個字符。 

      <P><FONT color=#ffffff>----</FONT>下面我們給出一個示例程序,其功能是對一個1024 
      點的輸入數組進行FFT變換,并繪制變換后頻譜實部的火柴桿圖,最后將原數據和變換后的數據寫入數據文件中。 <PRE>   #include“matlib.h"      //必須包含的頭文件
   #include <VCL.H>
   #pragma hdrstop

   #include“TryMatcomU.h"
   #pragma package(smart_init)
   #pragma resource“*.dfm"
    TForm1*Form1;
    __fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
    {
    }
    void __fastcall TForm1::Button1Click(TObject*Sender)
    {
    int k=0;  
    initM(MATCOM_VERSION);         //必須
進行的初始化
    Mm cur1,cur2;              //定義變量
    cur1=zeros(128);  cur2=zeros(128);  //變量初始化

    for  (k=1;k&lt;=128;k++)   
    cur1.r(k)=randM();         //生成一個隨機數列
    figure(1);
    plot(cur1);             //圖形顯示該數列
    
    cur2=fft(cur1,128);   //做128點fft變換
    figure(2);
    //繪制fft變換后實部的火柴桿圖,注意此處多變量輸入的格式
    stem((CL(cur1),real(cur2),TM(“r")));    
        
    fid=fopen(filename,mode,format) opens 
    exitM();                   //退出調用
    }
</PRE>
      <P><FONT 
      color=#ffffff>----</FONT>如果完全使用C++來實現本程序的工作,其代碼將超過300行!由此可以看出,C++Builder與Matlab函數的混合編程可以給我們帶來多么大的方便! 

      <P><FONT color=#ffffff>----</FONT>3.變量內部狀態/數據的觀察方法 
      <P><FONT color=#ffffff>----</FONT> Mediva使用的所有變量均定義為Mm類型。如果在C 
      ++Builder中觀察Mm類型變量的內部狀態/數據,要稍麻煩一些,但在調試程序時,這又是不可避免的一步,這里舉例給出變量觀察的方法。 
      <P><FONT color=#ffffff>----</FONT>例如對上面生成的cur2數列進行觀察: <PRE>   *cur2.pr        0.1892    cur2(1)的實部
   *cur2.pi        0.0013    cur2(1)的虛部
</PRE>
      <H3>三、 C++Builder調用Matlab工具箱 <BR>函數轉換后的DLL </H3><FONT 
      color=#ffffff>----</FONT>1. Matlab函數向DLL的轉化 
      <P><FONT 
      color=#ffffff>----</FONT>Mediva軟件提供了將Matlab函數轉換為DLL的功能,非常方便。但需要注意的是: 
      <UL>
        <LI>Matlab5.0以上版本,所有帶有tf類的函數均無法轉換; 
        <LI>Matlab4.2以下版本,多數函數能夠轉換,但轉換后大多不能直接使用,而必須加以處理。</LI></UL>
      <P><FONT color=#ffffff>----</FONT> MATCOM V4.3中把含有輸入參數的M文件轉換成 
      DLL時,生成的DLL無法調用。以.M為例: <PRE>  function [x1,x2]=flower(x3)
 </PRE>
      <P><FONT color=#ffffff>----</FONT>MATCOM生成的FLOWER.CPP和FLOWER.H中聲明為: <PRE>Mm flower(Mm x3, i_o_t, Mm& x1__o, Mm& x2__o) {
    	begin_scope
    	x3.setname(“x3"); 
    	...
  }

   Mm flower(Mm x3);
   Mm flower(Mm x3, i_o_t, Mm& x1__o, Mm& x2__o);
</PRE>
      <P><FONT color=#ffffff>----</FONT>而生成的G_FLOWER.CPP聲明為: <PRE>    void DLLX _stdcall flower_1_1(Mm** in01, Mm**out01) 
     void DLLX _stdcall flower_1_2
     (Mm** in01, Mm**out01, Mm**out02)     
</PRE>
      <P><FONT 
      color=#ffffff>----</FONT>其中對于in01的說明是不正確的,應按如下修改,然后,按如下MAKE文件進行編譯。 <PRE>#
# MATCOM makefile

all: flower.dll

g_flower.obj: g_flower.cpp
bcc32-c-Id:\matcom43\-WD-Id:\matcom43\lib
-H=matlib.csm-a4-5-eg_flower.obj g_flower.cpp

flower.dll: flower.obj g_flower.obj 
bcc32-Ld:\matcom43\-WD-Id:\matcom43\lib
-H=matlib.csm-a4-5-eflower.dll @flower.rsp 
d:\matcom43\lib\mdv4300b.lib
</PRE>
      <P><FONT color=#ffffff>----</FONT>在CPP中調用這個函數之前,一定要先給in01分配空間。 <PRE> #include“matlib.h"
 #pragma hdrstop
  
 #include“flower.h"
  
 #define WIN32_LEAN_AND_MEAN
 #include <WINDOWS.H>
 #include“matlib.h"
 #pragma hdrstop
  
  extern“C" {
    void DLLX _stdcall flower_1_1(Mm in01, Mm**out01) {
     *out01=new Mm(); 
      //*in01=new Mm();
     **out01=flower(in01);
      exitM();
    }
    
void DLLX _stdcall flower_1_2(Mm in01, Mm*
 *out01, Mm**out02) {
     *out01=new Mm();*out02=new Mm(); 
      //*in01=new Mm();      
      flower(in01, i_o ,**out01,**out02);
      exitM();
}
</PRE></TD></TR></TBODY></TABLE>
<SCRIPT language=JavaScript> 
function adbn(sname,pname) 
{
var  Jtoday= new Date();jt=Jtoday.getTime();
var tilex='';
var catex='';
var sizex='1x1';
var w=1;h=1;
var adname='.cn';
document.write('<table border=0><tr><td>');
document.write('<A HREF="http://ad'+adname+'.doubleclick.net/jump/'+sname+pname+';sz='+sizex+';'+catex+tilex+'ord='+jt+'?" target=_blank><IMG SRC="http://ad'+adname+'.doubleclick.net/ad/'+sname+pname+';sz='+sizex+';'+catex+tilex+'ord='+jt+'?" border=0 height="'+h+'" width="'+w+'"></A>');
document.write('</td></tr></table>');
}
</SCRIPT>

<SCRIPT language=JavaScript>
adbn('www.ccw.com.cn/','week');
</SCRIPT>
<BR>
<TABLE align=center>
  <TBODY>
  <TR>
    <TD colSpan=7>
      <HR color=#f46240 SIZE=1 width=660>
    </TD></TR>
  <TR>
    <TD align=middle colSpan=7><BR>周報全文頻道聯系方式:010-68096699-812</TD></TR>
  <SCRIPT language=Javascript>
function AddBookMark(theTip)
{
  theSite=window.location;
  window.external.AddFavorite(theSite,theTip)
}
</SCRIPT>

  <TR>
    <TD align=middle><A href="http://www2.ccw.com.cn/pub/about.asp" 
      target=_blank>【關于我們】</A></TD>
    <TD align=middle><A href="http://www2.ccw.com.cn/pub/serv.asp" 
      target=_blank>【廣告服務】</A></TD>
    <TD align=middle><A href="http://www2.ccw.com.cn/pub/contribute.asp" 
      target=_blank>【投稿指南】</A></TD>
    <TD align=middle><A href="http://www2.ccw.com.cn/pub/contact.asp" 
      target=_blank>【聯系方式】</A></TD>
    <TD align=middle><A href="http://www2.ccw.com.cn/pub/clause.asp" 
      target=_blank>【法律聲明】</A></TD></TR>
  <TR>
    <TD align=middle colSpan=5>Copyright(C) ccw.com.cn,All rights reserved 
  </TD></TR>
  <TR>
    <TD align=middle 
colSpan=7><B>中國計算機世界出版服務公司版權所有</B></TD></TR></TBODY></TABLE></CENTER></BODY></HTML>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一三区三区四区免费在线看| 91精品欧美一区二区三区综合在| 亚洲v中文字幕| 精品剧情v国产在线观看在线| 91首页免费视频| 国产精品羞羞答答xxdd | ㊣最新国产の精品bt伙计久久| 欧美裸体bbwbbwbbw| 成人av在线影院| 麻豆91在线观看| 亚洲午夜一二三区视频| 国产精品蜜臀av| 久久综合视频网| 91麻豆精品国产91久久久久久| 不卡电影一区二区三区| 国产在线精品一区二区三区不卡 | 国模一区二区三区白浆| 亚洲一区二区三区三| 中文字幕va一区二区三区| 欧美xxxx在线观看| 欧美精品自拍偷拍| 在线观看网站黄不卡| 成人国产精品视频| 国产精品538一区二区在线| 日韩高清一区在线| 亚洲成人福利片| 亚洲激情自拍偷拍| 成人免费视频在线观看| 国产精品午夜在线| 国产性色一区二区| 久久精品网站免费观看| 精品国产伦一区二区三区观看体验| 欧美人妇做爰xxxⅹ性高电影| 在线视频观看一区| 欧美性高清videossexo| 在线看国产一区二区| 91麻豆精品在线观看| 91免费国产在线| 91福利国产精品| 欧美系列日韩一区| 欧美日韩午夜影院| 欧美日韩日日摸| 欧美高清视频不卡网| 欧美日精品一区视频| 精品视频在线视频| 欧美喷水一区二区| 国产精品国产a| 国产精品你懂的在线欣赏| 欧美国产欧美综合| ㊣最新国产の精品bt伙计久久| 亚洲欧洲精品一区二区三区| 亚洲女与黑人做爰| 亚洲国产va精品久久久不卡综合| 亚洲国产综合色| 五月综合激情网| 另类小说欧美激情| 国产麻豆一精品一av一免费 | 3atv一区二区三区| 欧美videossexotv100| 2020国产精品| 一色屋精品亚洲香蕉网站| 亚洲永久免费视频| 美日韩黄色大片| 国产91对白在线观看九色| 91日韩在线专区| 欧美精品三级日韩久久| 欧美xxxxxxxx| 国产精品二三区| 亚洲第一久久影院| 国产一区二三区| 91在线观看污| 91麻豆精品国产91久久久使用方法 | 日韩午夜小视频| 国产色一区二区| 亚洲精品国产无套在线观| 日本网站在线观看一区二区三区 | 福利视频网站一区二区三区| 一本大道久久a久久综合婷婷| 欧美裸体一区二区三区| 国产日韩av一区二区| 亚洲一区二区三区小说| 狠狠久久亚洲欧美| 91女人视频在线观看| 日韩女优av电影| 亚洲欧美综合在线精品| 丝袜亚洲另类丝袜在线| 欧美一区二区三区在线观看视频| 日韩三级视频在线看| 亚洲欧美日韩在线| 韩国女主播一区| 精品视频123区在线观看| 久久久久国色av免费看影院| 亚洲综合av网| 成人午夜视频免费看| 欧美一区二区福利视频| 亚洲人成在线播放网站岛国| 美女视频黄a大片欧美| 色综合久久综合中文综合网| 精品成人免费观看| 亚洲一区二区四区蜜桃| 成人精品免费网站| 欧美成人免费网站| 亚洲18影院在线观看| 99久久99久久精品免费看蜜桃| 精品久久久久久久人人人人传媒 | 国产经典欧美精品| 欧美巨大另类极品videosbest| 国产精品久久毛片av大全日韩| 日韩电影网1区2区| 在线免费视频一区二区| 国产精品传媒视频| 国产美女视频91| 欧美大片在线观看一区| 亚洲成人先锋电影| 在线观看一区日韩| 亚洲男人电影天堂| 不卡大黄网站免费看| 久久久精品黄色| 极品美女销魂一区二区三区免费| 欧美日韩精品福利| 亚洲一区二区三区免费视频| 色天天综合久久久久综合片| 国产精品入口麻豆原神| 国内精品免费**视频| 精品日韩在线观看| 久久99精品久久只有精品| 日韩一区二区三区三四区视频在线观看| 亚洲黄色在线视频| 欧日韩精品视频| 亚洲综合一区二区| 欧美色成人综合| 婷婷成人综合网| 在线成人av网站| 人人超碰91尤物精品国产| 欧美精品一级二级| 日韩在线一区二区| 欧美人妖巨大在线| 日韩精品一二区| 日韩欧美一级精品久久| 免费成人在线网站| 欧美精品一区二区三区一线天视频| 日本欧美久久久久免费播放网| 欧美一区二区成人| 欧美性做爰猛烈叫床潮| 亚洲大片免费看| 欧美一级午夜免费电影| 黄页网站大全一区二区| 国产情人综合久久777777| 成人久久18免费网站麻豆 | 26uuu久久天堂性欧美| 国产精品一二二区| 国产精品污网站| 一本一道久久a久久精品| 亚洲五码中文字幕| 欧美一区二区国产| 福利视频网站一区二区三区| 中文字幕字幕中文在线中不卡视频| 在线观看国产91| 美女看a上一区| 久久精品视频一区| 91蝌蚪国产九色| 日韩成人av影视| 国产丝袜美腿一区二区三区| a级高清视频欧美日韩| 亚洲午夜成aⅴ人片| 精品久久久久久久久久久久久久久久久 | 亚洲综合av网| 精品免费国产二区三区| 9人人澡人人爽人人精品| 亚洲r级在线视频| 欧美精品一区二区久久久| caoporn国产一区二区| 午夜在线成人av| 国产网站一区二区| 在线观看免费成人| 国产最新精品精品你懂的| 中文字幕亚洲视频| 7777精品久久久大香线蕉 | 国产成人午夜99999| 一片黄亚洲嫩模| 亚洲精品在线一区二区| 成人激情开心网| 日韩电影在线免费看| 国产精品水嫩水嫩| 91精品在线免费| 99热国产精品| 精品在线免费观看| 亚洲精品欧美综合四区| 日韩视频一区二区| 一本高清dvd不卡在线观看| 国内一区二区在线| 午夜精品久久久| 欧美国产欧美亚州国产日韩mv天天看完整| 欧美在线free| 成人黄色在线看| 日本女优在线视频一区二区| 中文字幕一区免费在线观看| wwwwww.欧美系列| 91麻豆精品国产自产在线| 91麻豆成人久久精品二区三区|