乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      vs2010和Matlab R2012b 混合編程

       LSS133LSS 2014-06-10

      思路:為了實現(xiàn)matlab與C++混合編程,采用由m文件構造動態(tài)鏈接庫然后在visual studio中調用的方法。

      本人系統(tǒng):Windows 7旗艦版(32位),VS2010旗艦版,Matlab R2012b    只有R2010b或以上版本才識別VS2010編輯器

       

      1. matlab中dll創(chuàng)建

               1.1    m文件編寫

                function [ yt ] = myfitline( x,y,m,xrange,t )
               %xy為坐標向量,m為多項式階數(shù),xrange為顯示圖上面的坐標范圍,t為要求的坐標橫軸位置
               %   Detailed explanation goes here
               p=polyfit(x,y,m);%計算各階系數(shù)p1x^m+p2x^(m-1)+....+ pmx+ p(m+1)
               yy=polyval(p,xrange);%計算一個區(qū)域內的函數(shù)值用于畫圖
               yt=polyval(p,t);   %  計算指定x下的函數(shù)對應的y值
               plot(x,y,'r*',xrange,yy,'b')
               end

              1.2   設置編譯器

                           >> mex -setup   選擇VS2010

                           >> mbuild -setup  選擇VS2010

                           >> mcc -W cpplib:Myfitline -T link:lib myfitline     (這就創(chuàng)建好了)

                    其中,mccMatlab提供的編譯命令,對于這一點,Matlab的幫助說明如下:
                     -W lib:string link:lib其中-W是控制編譯之后的封裝格式,cpplib,是指編譯成C++lib,cpplib冒號后面是指編譯的庫的名字,-T表示目標,

             link:lib表示要連接到一個庫文件的目標,目標的名字是后面的myfitline,即你寫的m函數(shù)的名字。
                    運行完之后,你的目錄下面,將會出現(xiàn)以下一些文件:
                    Myfitline.cpp
                    Myfitline.exp
                    Myfitline.dll
                    Myfitline.exports
                    Myfitline.h
                    Myfitline.lib
                    mccExcludedFiles.log
                    readme.txt
                    具體每一個文件的意思,請查幫助,這里只說其中很有用的幾個:
                    Myfitline.dll是編譯好的動態(tài)庫,myfitline這個函數(shù)封裝在里面,Myfitline.h是對應的頭文件,在C里面調用這個函數(shù)的時候,需要include這個頭文件,

             在這個頭文件的最后,你可以看到下面的內容:
                    extern LIB_Myfitline_CPP_API void MW_CALL_CONV myfitline(int nargout, mwArray& yt, const mwArray& x,
                    const mwArray& y, const mwArray& m, const mwArray& xrange, const mwArray& t);             

                    這就是myfitlineC函數(shù)的聲明。nargout表示輸出變量的個數(shù),其他就是對應了m函數(shù)的幾個變量。
                    注意,變量的類型是mwArray,這是Matlab提供的一個特殊的變量類型(在7.0的版本,編譯之后,變量類型是mxArray)。mwArray是一個類,具體可以查幫助。

       

      2.系統(tǒng)環(huán)境配置

       

                    Computer Properties -> Advanced system settings -> Environment Variables -> User Variables -> path, 添加(MATLAB下為MATLAB 2012軟件安裝目錄)

                    ...\MATLAB\extern\lib\win32\microsoft;

                    ...\MATLAB\bin\win32

                    Computer Properties -> Advanced system settings -> Environment Variables -> System Variables -> path, 添加

                    ...\MATLAB\runtime\win32;

                    ...\MATLAB\bin;

                    ...\MATLAB\extern\lib\win32\microsoft;

                    ...\MATLAB\bin\win32


      3.vs2010環(huán)境配置

       

                  ①Property Pages -> VC++ Directories -> Include Directories, 添加(安裝目錄下)

                  ...\MATLAB\extern\include\ 

                  ②Property Pages -> VC++ Directories -> Library Directories, 添加

                  ...\MATLAB\extern\lib\win32\microsoft

                  ③Property Pages -> C/C++ -> General -> Additional Include Directories, 添加

                  ...\MATLAB\extern\include\

                  ④Property Pages -> Linker -> General -> Additional Library Directories, 添加

                  ...\MATLAB\extern\lib\win32\microsoft

                 ⑤Property Pages -> Linker -> Input -> Additional Dependencies, 添加

                                libeng.lib

                                libmat.lib

                                libmex.lib

                                libmx.lib

                                mclmcrrt.lib

                                mclmcr.lib

                                Myfitline.lib

          4.vs2010下完成程序

                     把剛才生成的*.h *.dll *.lib文件復制到剛剛新建的工程的文件夾下,并且用添加—現(xiàn)有項添加的工程中。(此處的*代表你的m文件名稱

                     調用函數(shù) myfitline的文件前要

                                  #include "mclmcr.h"

                                  #include "matrix.h"

                                  #include "mclcppclass.h"

                                  #include "Myfitline.h

                    具體程序如下:

                    void CNewFeatureofStormView::Onposition()
                  {
                       // TODO: 在此添加命令處理程序代碼
                       if( !MyfitlineInitialize())
                       {
                           MessageBox(_T("初始化失敗"));
                        }
                       // 為變量分配內存空間,可以查幫助mwArray
                        mwArray mwX(5, 1, mxDOUBLE_CLASS); // 5,1表示矩陣的大?。ㄋ衜altab只有一種變量,就是矩陣,
                        mwArray mwY(5, 1, mxDOUBLE_CLASS);//為了和Cpp變量接軌,設置成1*5的矩陣,mxDOUBLE_CLASS表示變量的精度)
                        mwArray mwM(1, 1, mxDOUBLE_CLASS);
                        mwArray mwXR(50,1, mxDOUBLE_CLASS);
                        mwArray mwYT(1,1, mxDOUBLE_CLASS);
                        mwArray mwT(1,1, mxDOUBLE_CLASS);
                        int x[5]={432,435,438,441,443};    //樣本點坐標
                        int y[5]={136,138,140,145,147};    //
                        int xr[50],m=3,t=446;           //參數(shù)設置
                        for (int i=400;i<450;i++)
                        {
                            xr[i-400]=i;
                        }
                        mwX.SetData(x, 5);      //調用類里面的SetData函數(shù)給類賦值
                        mwY.SetData(y, 5);
                        mwM.SetData(&m, 1);
                        mwXR.SetData(xr, 50);
                        mwT.SetData(&t, 1);
                        myfitline(1,mwYT,mwX,mwY,mwM,mwXR,mwT);
                        double c = mwYT.Get(1, 1); //調用類里面的Get函數(shù)獲取取函數(shù)返回值
                        CString strNumber;
                        strNumber.Format(_T("%lf"),c);
                        MessageBox(strNumber, _T("坐標"));
                        // 后面是一些終止調用的程序
                        MyfitlineTerminate();
                        // terminate MCR
                       mclTerminateApplication();
                  }

       

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多