導航:首頁 > 編程語言 > matlab混合編程

matlab混合編程

發布時間:2022-02-13 19:36:28

① vc++ matlab混合編程 fsolve

這個可以有四種方法實現:
(1)將Matlab程序編譯成 C/C++源文件並嵌入VC++;
(2)在C/C++程序中利用 Matlab engine調用 Matlab函數;
(3)在C/C++程序中直接使用 Matlab C/C++ Math Library;
(4)將.m文件編譯成 *.dll文件嵌入到 VC++的程序中。
自己上網查一下。

不過告訴你一個簡單的,在matlab的工作窗口執行:
mbuild -setup

按提示操作
然後執行
met -setup
完成後,到VC裡面,應該會出現met工程選項,然後操作就很簡單了。

② 如何實現java和matlab的混合編程,用java做交互界面,調用matlab做計算有實例請發給我參考下,十分謝謝

部署好了就行了。環境部署網上都有。直接搜索Java與matlab混編就行。我也在做混編,部署完了,使用matlab中的deploytool將.m文件編譯為class文件,就可以在Java中當成類的一個方法調用。實例發給你,你也參考不了什麼。

③ matlab和c混合編程如何運行

簡單點的,你就用matlab寫一個介面程序,封裝你的c程序,類似下面這種:(matlab的例子,實現數組相乘,文件為arrayProct.c)

#include "mex.h"

/* 你的c */
void arrayProct(double x, double *y, double *z, mwSize n)
{
mwSize i;
/* multiply each element y by x */
for (i=0; i<n; i++) {
z[i] = x * y[i];
}
}

/* 介面程序 */
void mexFunction( int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[])
{
/*初始化輸入輸出*/
double multiplier; /* input scalar */
double *inMatrix; /* 1xN input matrix */
mwSize ncols; /* size of matrix */
double *outMatrix; /* output matrix */

/* 參數檢查,如果程序較簡單也可以不用做*/
if(nrhs!=2) {
mexErrMsgIdAndTxt("MyToolbox:arrayProct:nrhs","Two inputs required.");
}
if(nlhs!=1) {
mexErrMsgIdAndTxt("MyToolbox:arrayProct:nlhs","One output required.");
}
/* make sure the first input argument is scalar */
if( !mxIsDouble(prhs[0]) ||
mxIsComplex(prhs[0]) ||
mxGetNumberOfElements(prhs[0])!=1 ) {
mexErrMsgIdAndTxt("MyToolbox:arrayProct:notScalar","Input multiplier must be a scalar.");
}

/* check that number of rows in second input argument is 1 */
if(mxGetM(prhs[1])!=1) {
mexErrMsgIdAndTxt("MyToolbox:arrayProct:notRowVector","Input must be a row vector.");
}

/* get the value of the scalar input */
multiplier = mxGetScalar(prhs[0]);

/* create a pointer to the real data in the input matrix */
inMatrix = mxGetPr(prhs[1]);

/* get dimensions of the input matrix */
ncols = mxGetN(prhs[1]);

/* create the output matrix */
plhs[0] = mxCreateDoubleMatrix(1,ncols,mxREAL);

/* get a pointer to the real data in the output matrix */
outMatrix = mxGetPr(plhs[0]);

/* call the computational routine */
arrayProct(multiplier,inMatrix,outMatrix,ncols);
}

這個看起來復雜,其實很簡單的,就幾步:
1、使用mxGet*將輸入變為matlab兼容形式
2、使用mxSet*初始化輸出空間
3、使用你的C程序運算

④ MATLAB混合編程在調用FORTRAN的程序

方法一、把這段代碼用matlab支持的風格重寫一遍,然後用mex編譯成mex32文件就可以了
方法二、把這段代碼封裝成exe,system命令進行含參調用,exe與matlab之間用文件進行數據傳遞。
方法三、把這段代碼封裝成dll,然後在matlab里用操作dll的命令進行調用,這種方法我用的不多,沒法說的更詳細。相關資料可以查閱ilovematlab論壇混合編程板塊。

⑤ matlab可以和什麼語言混編

可以和matlab語言混編的語言多了,C/C++/VB/JAVA....具體怎麼用,就得另行研究了,如果想學習和哪個混編的可問我.
樂意為您解答.

⑥ matlab與才c/c++混合編程

用Matlab編譯C語言生成的代碼效率並不高.如果真想有效的在Windows環境下調用數學工具的鏈接庫或com文件,建議還是用Microsoft Math v3.0.

⑦ Matlab混合編程之使用C\UDP動態鏈接庫傳輸數據的秘訣

方法/步驟
1、啟動兩個matlab軟體,分別載入Dll
loadlibrary('CSForUDLL.dll','CSForUDLL.h')
2、libfunctions
CSForUDLL
-full
查看一下Dll里的所有函數
3、在一個matlab運算add_server函數,作為啟動Server端
我寫的dll第一個參數為要發送的數字
calllib('CSForUDLL','add_server',2,2,0)
之行結束會發現Server端在一直等待。
4、在另一個matlab上運行add_client函數,作為啟動Client端
同理,我的dll第一個參數用來發送數字;
calllib('CSForUDLL','add_client',2,2,0)
5、回車運行,會發現返回一個數字。
這個數字是從Server端發送過來的。
6、再看一下Server端,收到Client發送的數字1

⑧ matlab與java混合編程有什麼作用

Java和matlab混合編程

如果用Matlab和java混合編程開發Windows的應用程序則可以實現優勢互補,縮短開發時間,降低程序設計的復雜度。同時程序可以脫離Matlab環境獨立運行,在工程計算和教學實踐中都具有實際意義。
1.使用java調用Maltab函數的基本方法是:通過Java Builder實現Java調用Matlab。在Java環境中直接調用Matlab所生成的Jar包。

下面以在Java中產生任意維數的魔方矩陣,計算任意矩陣的特徵向量和特徵值,對兩組數據進
行擬合並繪制擬合曲線三個實例來說明通過Java
Builder實現Java調用Matlab的過程。傳統的純Java編程實現上述實例非常復雜,甚至很難完成。這一問題在Matlab中只需要調用幾個
函數即可完成。

1.1、將Matlab函數包裝成Java類

首先在Matlab中編寫三個M文件:

Eig.m

function [v,d]=Eig(input)

format long

[v,d]=eig(input);

End

Magic.m

function f =Magic( input )

f=magic(input);

end

Plot.m

function Plot(x,y )

p=polyfit(x,y,3);

t=min(x):max(x)/100:max(x);

s=polyval(p,t);

plot(x,y,'*',t,s);

title('數據擬合結果');

xlabel('x');

ylabel('y');

end

其次,在Matlab中新建一個Deployment
Project,名稱為MyProject.prj,類型為Java
package。在Project中新建三個Class,分別為GetEig,GetMagic,PolyFit。將
Eig.m,Magic.m,plot.m分別添加到上述Class中。之後點擊Builder the project,等待編譯成功即可。

1.2、在Java中調用Matlab函數

新建一個Java類JavaMatlab,並引入相關的包。

import com.mathworks.toolbox.javabuilder.*;//引入Matlab相關包

import MyProject.*;//引入建立的包及類

調用時Java與Matlab之間的參數傳遞需要通過MWNumericArray完成。具體的調用代碼如下:

package org.genius.ExpandJava;

import MyProject.*;

import com.mathworks.toolbox.javabuilder.*;

public class JavaMatlab {

public static void main(String[] args) {

MWNumericArray a = null; // 用於保存矩陣

MWNumericArray ax = null; // 用於保存矩陣

MWNumericArray ay = null; // 用於保存矩陣

Object[] result = null; // 用於保存計算結果

GetEig getEig = null;

GetMagic getMagic=null;

PolyFit polyFit=null;

int r = 4; // 魔方矩陣維數

int array[][]={{50,-20,0},{-20,80,60},{0,60,-70}};

double x[]={0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1};

double y[]={-0.447,1.978,3.28,6.16,7.08,7.34,7.66,9.56,9.48,9.3,11.2};

try {

//產生魔方矩陣並列印

a = new MWNumericArray(r, MWClassID.DOUBLE);

getMagic = new GetMagic();

result = getMagic.Magic(1,a);

System.out.println("產生的四維魔方矩陣:");

System.out.println(result[0]);

MWArray.disposeArray(result);

//計算所給矩陣的特徵向量和特徵值並列印結果

a = new MWNumericArray(array, MWClassID.DOUBLE);

getEig = new GetEig();

result = getEig.Eig(2, a);

System.out.println("原始矩陣:");

System.out.println(a.toString());

System.out.println("得到的特徵向量:");

System.out.println(result[0]);

System.out.println("得到的特徵值:");

System.out.println(result[1]);

MWArray.disposeArray(result);

ax = new MWNumericArray(x, MWClassID.DOUBLE);

ay = new MWNumericArray(y, MWClassID.DOUBLE);

polyFit = new PolyFit();

result=polyFit.Plot(ax,ay);

polyFit.waitForFigures();

} catch (Exception e) {

System.out.println("Exception: " + e.toString());

}

finally {

// 釋放本地資源

MWArray.disposeArray(a);

MWArray.disposeArray(ax);

MWArray.disposeArray(ay);

MWArray.disposeArray(result);

getEig.dispose();

getMagic.dispose();

polyFit.dispose();

}

}

}

⑨ matlab與c 混合編程 大概可提速多少倍

我做圖像處理的時候,先是用MATLAB,因為有大量的循環處理,其運行時間將近一分鍾,後來改用MATLAB與C混合,時間縮短至0.09秒,時間之差,真的是不可估量。

但是,情況不完全如此,MATLAB優點在於矩陣運算中,如果你的程序中有大量的矩陣運算,那麼混合編程個人不是很建議;C語言優點在於循環速度很快。

我也有這樣的經歷,我的演算法中有大量的矩陣運算(由於我是做圖像處理,矩陣基本上是512*512的),本來用MATLAB編程用了9秒左右的時間,但是改用了C混合後,N長時間,反正我是等了將近一分鍾,混合程序我是檢驗過的,沒有死循環的。

以上這些完全個人經驗之談,希望對您有個幫助。

⑩ Java與MATLAB混合編程,如何處理之間圖像傳遞

Java與MATLAB混合編程,如何處理之間圖像傳遞?
Java和matlab混合編程 如果用Matlab和java混合編程開發Windows的應用程序則可以實現優勢互補,縮短開發時間,降低程序設計的復雜度。同時程序可以脫離Matlab環境獨立運行,在工程計算和教學實踐中都具有實際意義。

閱讀全文

與matlab混合編程相關的資料

熱點內容
看幀率app如何使用 瀏覽:523
從DHC伺服器租用IP地址 瀏覽:473
編譯怎麼學 瀏覽:329
數碼管顯示0到9plc編程 瀏覽:665
伺服器是為什麼服務的 瀏覽:765
java定義數據類型 瀏覽:874
安卓pdf手寫 瀏覽:427
什麼是app開發者 瀏覽:284
android鬧鍾重啟 瀏覽:101
程序員失職 瀏覽:518
在雲伺服器怎麼改密碼 瀏覽:586
伺服器pb什麼意思 瀏覽:940
51駕駛員的是什麼app 瀏覽:670
php靜態變數銷毀 瀏覽:886
編程買蘋果電腦 瀏覽:762
flac演算法 瀏覽:499
reactnative與android 瀏覽:665
程序員是干什麼的工作好嗎 瀏覽:258
kbuild編譯ko 瀏覽:471
條件編譯的宏 瀏覽:566