matlab是c語言嗎 matlab可以運行c語言嗎

大家好,今天給各位分享matlab是c語言嗎的一些知識,其中也會對matlab可以運行c語言嗎進行解釋,文章篇幅可能偏長,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站...
大家好,今天給各位分享matlab是c語言嗎的一些知識,其中也會對matlab可以運行c語言嗎進行解釋,文章篇幅可能偏長,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在就馬上開始吧!
matlab上的程序在C語言上能運行嗎
呵呵,看來我們有研究相同的問題吧matlab是一種科學的計算語言,采用的是解釋執(zhí)行的方式,在配置比較水的機器(比如說我的),運行起來速度不敢恭維,但是他適合工程師用,快速建立起自己的運算平臺,很多語法是類似c語言。
你可以考察一下matlab的安裝目錄下extern下面lib庫中的函數(shù),可以發(fā)現(xiàn),有很多的c語言代碼,實際上,其內(nèi)核有很多c的成分。
所以你應(yīng)該可以明白了,可以運行,但是要把matlab的庫函數(shù)包含在c編譯庫中。
你完全可以在extern中的example中,在matlab環(huán)境下面運行幾個c代碼試一試,當然所采用的指令是mex(把c語言用于matlab中),mcc把matalb代碼轉(zhuǎn)化為c代碼,一些具體的參數(shù),你可以用matlab強大的help工具獲得。我們還可以一起探討一下啊,給各郵箱之類的吧,呵呵,很樂意的
matlab調(diào)用c語言
如果我有一個用C語言寫的函數(shù),實現(xiàn)了一個功能,如一個簡單的函數(shù):
doubleadd(doublex,doubley){
returnx+y;
}
現(xiàn)在我想要在Matlab中使用它,比如輸入:
>>a=add(1.1,2.2)
3.3000
要得出以上的結(jié)果,那應(yīng)該怎樣做呢?
解決方法之一是要通過使用MEX文件,MEX文件使得調(diào)用C函數(shù)和調(diào)用Matlab的內(nèi)置函數(shù)一樣方便。MEX文件是由原C代碼加上MEX文件專用的接口函數(shù)后編譯而成的。
可以這樣理解,MEX文件實現(xiàn)了一種接口,它把在Matlab中調(diào)用函數(shù)時輸入的自變量通過特定的接口調(diào)入了C函數(shù),得出的結(jié)果再通過該接口調(diào)回Matlab。該特定接口的操作,包含在mexFunction這個函數(shù)中,由使用者具體設(shè)定。
所以現(xiàn)在我們要寫一個包含add和mexFunction的C文件,Matlab調(diào)用函數(shù),把函數(shù)中的自變量(如上例中的1.1和2.2)傳給mexFunction的一個參數(shù),mexFunction把該值傳給add,把得出的結(jié)果傳回給mexFunction的另一個參數(shù),Matlab通過該參數(shù)來給出在Matlab語句中調(diào)用函數(shù)時的輸出值(如上例中的a)。
比如該C文件已寫好,名為add.c。那么在Matlab中,輸入:
>>mexadd.c
就能把add.c編譯為MEX文件(編譯器的設(shè)置使用指令mex-setup),在Windows中,MEX文件類型為mexw32,即現(xiàn)在我們得出add.mexw32文件?,F(xiàn)在,我們就可以像調(diào)用M函數(shù)那樣調(diào)用MEX文件,如上面說到的例子。所以,通過MEX文件,使用C函數(shù)就和使用M函數(shù)是一樣的了。
我們現(xiàn)在來說mexFunction怎樣寫。
mexFunction的定義為:
voidmexFunction(
intnlhs,
mxArray*plhs[],
intnrhs,
constmxArray*prhs[]){
}
可以看到,mexFunction是沒返回值的,它不是通過返回值把結(jié)果傳回Matlab的,而是通過對參數(shù)plhs的賦值。mexFunction的四個參數(shù)皆是說明Matlab調(diào)用MEX文件時的具體信息,如這樣調(diào)用函數(shù)時:
>>b=1.1;c=2.2;
>>a=add(b,c)
mexFunction四個參數(shù)的意思為:
nlhs=1,說明調(diào)用語句左手面(lhs-lefthandside)有一個變量,即a。
nrhs=2,說明調(diào)用語句右手面(rhs-righthandside)有兩個自變量,即b和c。
plhs是一個數(shù)組,其內(nèi)容為指針,該指針指向數(shù)據(jù)類型mxArray。因為現(xiàn)在左手面只有一個變量,即該數(shù)組只有一個指針,plhs[0]指向的結(jié)果會賦值給a。
prhs和plhs類似,因為右手面有兩個自變量,即該數(shù)組有兩個指針,prhs[0]指向了b,prhs[1]指向了c。要注意prhs是const的指針數(shù)組,即不能改變其指向內(nèi)容。
因為Matlab最基本的單元為array,無論是什么類型也好,如有doublearray、cellarray、structarray……所以a,b,c都是array,b=1.1便是一個1x1的doublearray。而在C語言中,Matlab的array使用mxArray類型來表示。所以就不難明白為什么plhs和prhs都是指向mxArray類型的指針數(shù)組。
完整的add.c如下:
//add.c
#include"mex.h"http://使用MEX文件必須包含的頭文件
//執(zhí)行具體工作的C函數(shù)
doubleadd(doublex,doubley){
returnx+y;
}
//MEX文件接口函數(shù)
voidmexFunction(
intnlhs,
mxArray*plhs[],
intnrhs,
constmxArray*prhs[]){
double*a;
doubleb,c;
plhs[0]=mxCreateDoubleMatrix(1,1,mxREAL);
a=mxGetPr(plhs[0]);
b=*(mxGetPr(prhs[0]));
c=*(mxGetPr(prhs[1]));
*a=add(b,c);
}
mexFunction的內(nèi)容是什么意思呢?我們知道,如果這樣調(diào)用函數(shù)時:
>>output=add(1.1,2.2);
在未涉及具體的計算時,output的值是未知的,是未賦值的。所以在具體的程序中,我們建立一個1x1的實double矩陣(使用mxCreateDoubleMatrix函數(shù),其返回指向剛建立的mxArray的指針),然后令plhs[0]指向它。接著令指針a指向plhs[0]所指向的mxArray的第一個元素(使用mxGetPr函數(shù),返回指向mxArray的首元素的指針)。同樣地,我們把prhs[0]和prhs[1]所指向的元素(即1.1和2.2)取出來賦給b和c。于是我們可以把b和c作自變量傳給函數(shù)add,得出給果賦給指針a所指向的mxArray中的元素。因為a是指向plhs[0]所指向的mxArray的元素,所以最后作輸出時,plhs[0]所指向的mxArray賦值給output,則output便是已計算好的結(jié)果了。
上面說的一大堆指向這指向那,什么mxArray,初學者肯定都會被弄到頭暈眼花了。很抱歉,要搞清楚這些亂糟糟的關(guān)系,只有多看多練。
實際上mexFunction是沒有這么簡單的,我們要對用戶的輸入自變量的個數(shù)和類型進行測試,以確保
輸入正確。如在add函數(shù)的例子中,用戶輸入chararray便是一種錯誤了。
從上面的講述中我們總結(jié)出,MEX文件實現(xiàn)了一種接口,把C語言中的計算結(jié)果適當?shù)胤祷亟oMatlab罷了。當我們已經(jīng)有用C編寫的大型程序時,大可不必在Matlab里重寫,只寫個接口,做成MEX文件就成了。另外,在Matlab程序中的部份計算瓶頸(如循環(huán)),可通過MEX文件用C語言實現(xiàn),以提高計算速度。
matlab需要c語言基礎(chǔ)嗎
1.不需要。2.Matlab是一種高級編程語言,它的語法和C語言有些不同,但是并不需要C語言基礎(chǔ)就能學習和使用。Matlab的語法比較簡單易學,而且有很多現(xiàn)成的函數(shù)庫可以使用,因此對于初學者來說比較友好。3.當然,如果你已經(jīng)掌握了C語言,那么學習Matlab會更容易一些,因為兩者都是編程語言,有些基本概念是相通的。但是如果你沒有C語言基礎(chǔ),也不必擔心,因為Matlab的學習曲線并不陡峭,只要認真學習,就能夠掌握。
想學matlab,它和c語言比哪個好學點如何入手學習
為什么突然要學matlab呢?如果不是數(shù)學或者物理建模相關(guān)的應(yīng)用(當然matlab用途很廣泛,這個只是最主要的部分),當然不應(yīng)該貿(mào)然去學matlab了。同樣,想學c語言也應(yīng)該有一個充分的理由,然后才能判斷合適不合適,哪一個更好。最好,如果在matlab和c語言之間躊躇的話,不如學python吧,從能力上c和matlab可以做的python基本都能做的了,而學習起來相對前兩者都會簡單一些
matlab可以用c語言編程嗎
可以的,
matlab是一種科學的計算語言,采用的是解釋執(zhí)行的方式,在配置比較水的機器(比如說我的),運行起來速度不敢恭維,但是他適合工程師用,快速建立起自己的運算平臺,很多語法是類似c語言。你可以考察一下matlab的安裝目錄下extern下面lib庫中的函數(shù),可以發(fā)現(xiàn),有很多的c語言代碼,實際上,其內(nèi)核有很多c的成分。
matlab安裝在c盤哪里
Matlab默認的安裝路徑是在C盤的ProgramFiles目錄下。1.由于Matlab在安裝時默認選擇安裝在C盤,因此該軟件的安裝文件夾就會出現(xiàn)在C盤的ProgramFiles目錄下。2.此外,Matlab也可以安裝在其他磁盤或路徑下,但這需要用戶手動選擇安裝路徑。無論用戶選擇安裝在哪里,均會有一個明確的安裝路徑。3.在Matlab安裝完成后,用戶可以在安裝路徑下的bin文件夾下找到Matlab主程序。
matlab是c語言嗎和matlab可以運行c語言嗎的問題分享結(jié)束啦,以上的文章解決了您的問題嗎?歡迎您下次再來哦!
本文鏈接:http://m.tiantaijiaoyu.cn/qianduan/449.html