㈠ matlab如何入門
這個如果你是學過c語言或者是其他編程語言的話,是很快就能入門的。最好的方法就是找一門教材,照著上面的例子自己一個一個的親自編程。兩天就能上手了!
㈡ matlab編程入門需要怎麼做
入門需要做下面幾個方面事:
1、M語言編程。這是所有Matlab操作的基礎,Matlab的所有功能都是通過M語言來實現的。M語言是一種簡單的腳本語言,學習M語言,要學會基本的語句,還要能夠掌握基本的文件IO,GUI開發,數據導入,矩陣操作等等。
2、科學計算。科學計算是matlab最為強大的功能之一,這一部分的學習實質上是對大學數學的一個復習。你得復習微分方程的建立,積分求導的法則,線性代數的基本理論。復習完這些知識,再來進行各種計算。
3、機器學習。Matlab內置了豐富的機器學習庫最新版的matlab甚至支持深度學習以及GPU運算,只需要一些簡單的M語言編程就能快速搭建起來一個網路。
4、模擬模擬。能夠進行模擬模擬也是Matlab的一大特色功能,在科學領域,小到原子運行,大到宇宙爆炸,沒有他不能勝任的;在工程領域,電磁場模擬,機械結構評估,水利電力模擬,Matlab幾乎無所不能。
注意事項:
1、我們必須下載好一個matlab版本,一般來說新版的話,它的內置命令函數簡化,操作容易上手快,對基礎知識的儲備也不是很多。
2、這款軟體需要一定的數學知識,最為重要的是懂些矩陣和線性代數的知識,為了更好的更直觀地表達數據的可視化。
3、後面我們自己可以找一本有關matlab的書籍教材,網上資料很多,找一本然後按照上面的例子上手matlab。
4、最後,我們再根據具體的工程、項目的需求來驗證我們的matlab知識。
㈢ MATLAB怎麼學呢
一,MATLAB功能非常全面,也非常強大,
主要用於科學計算,它的計算基於矩陣來實現,可用於以下方面:
1,數值計算(好多問題沒有解析解);
2,符號計算(呵呵,很強悍,做高數題方便了,不過在這方面MATLAB還不
是相當強,它的符號計算庫借用了Maple的);
3,數據的分析,處理及可視化(數據繪圖很方便);
4,圖形圖像處理,信號分析處理等等;
5,Simulink建模模擬,這是MATLAB非常有特色也是非常強大的功能,也使得其應用不僅僅局限於一般的科學計算。
二,MATLAB的軟體應用:
MATLAB是用C語言開發的,支持編程,而且其語法跟C語言很相似,樓主想必已經學過C語言,再學習MATLAB會很輕松。
MATLAB支持與C語言,Fortran語言,Java語言的混合編程,同時支持與word,excel的混合使用,擴展性強。
三,MATLAB的學習:
學習它首先要有比較好的教材,初級階段就用比較簡單的教材,清華的,北航的,都可以。
高級階段要用比較厚重,全面的教材,推薦一本鄙人正在使用的教材,人們郵電出版社出版,求是科技編著的《MATLAB
7.0
從入門到精通》,還有一本國內翻譯的由美國人寫的教材,很厚,很全(樓主自己在網上搜一下,我見同系的同學拿過,還是相當不錯的)。
另外,學習MATLAB跟學習其他語言一樣,要多上機,多練習,熟能生巧嘛。最後祝樓主學習愉快。
以上系個人總結,有啥不妥之處,還請見諒啊(看在我碼這么多字的份上,也該獎勵一下吧,呵呵)。
㈣ 新手怎麼學Matlab
一,MATLAB功能非常全面,也非常強大, 主要用於科學計算,它的計算基於矩陣來實現,可用於以下方面:
1,數值計算(好多問題沒有解析解);
2,符號計算(呵呵,很強悍,做高數題方便了,不過在這方面MATLAB還不 是相當強,它的符號計算庫借用了Maple的);
3,數據的分析,處理及可視化(數據繪圖很方便);
4,圖形圖像處理,信號分析處理等等;
5,Simulink建模模擬,這是MATLAB非常有特色也是非常強大的功能,也使得其應用不僅僅局限於一般的科學計算。
二,MATLAB的軟體應用:
MATLAB是用C語言開發的,支持編程,而且其語法跟C語言很相似,樓主想必已經學過C語言,再學習MATLAB會很輕松。
MATLAB支持與C語言,Fortran語言,Java語言的混合編程,同時支持與word,excel的混合使用,擴展性強。
三,MATLAB的學習:
學習它首先要有比較好的教材,初級階段就用比較簡單的教材,清華的,北航的,都可以。
高級階段要用比較厚重,全面的教材,推薦一本鄙人正在使用的教材,人們郵電出版社出版,求是科技編著的《MATLAB 7.0 從入門到精通》,還有一本國內翻譯的由美國人寫的教材,很厚,很全(樓主自己在網上搜一下,我見同系的同學拿過,還是相當不錯的)。
另外,學習MATLAB跟學習其他語言一樣,要多上機,多練習,熟能生巧嘛。最後祝樓主學習愉快。
以上系個人總結,有啥不妥之處,還請見諒啊(看在我碼這么多字的份上,也該獎勵一下吧,呵呵)。
㈤ MATLAB中如何運行c語言程序
呵呵,看來我們有研究相同的問題吧
matlab是一種科學的計算語言,採用的是解釋執行的方式,在配置比較水的機器(比如說我的),運行起來速度不敢恭維,但是他適合工程師用,快速建立起自己的運算平台,很多語法是類似c語言。你可以考察一下matlab的安裝目錄下extern下面lib庫中的函數,可以發現,有很多的c語言代碼,實際上,其內核有很多c的成分。
所以你應該可以明白了,可以運行,但是要把matlab的庫函數包含在c編譯庫中。
你完全可以在extern中的example中,在matlab環境下面運行幾個c代碼試一試,當然所採用的指令是mex(把c語言用於matlab中),mcc把matalb代碼轉化為c代碼,一些具體的參數,你可以用matlab強大的help工具獲得。我們還可以一起探討一下啊,給各郵箱之類的吧,呵呵,很樂意的
㈥ 怎樣把Matlab和c語言結合起來編程序
C、C++、JAVA都是完整的通用平台的語言。通俗的說,就是它們可以編寫任何程序並可以在大部分硬體系統和操作系統中運行,C++、JAVA都是在C語言基礎上發展起來的,在表達形式上三者很相似。區別是,C是面向過程語言,就是說,其編程核心是邏輯流程。C++和Java是面向對象語言,簡單的說,是以數據為中心進行編程。這三門語言現在都有強大的生命力,從使用范圍上大略可以按照Java——C——C++的順序排列。特別的,c語言非常適合底層開發,具有獨一無二的優勢,而且具有基礎學習的意義,可以大大地幫助兩外兩門語言的學習。
VB、QB都是從Basic語言發展起來的。VB是window平台的專屬語言,所以適用面窄,也不適合作為入門語言,因為你學不到編程的基本知識和能力,而要花精力去學習windows特有的編程方式和習慣。QB沒人用了,死掉的語言。
FOX是一種已經廢棄的資料庫語言,不用考慮了。
Matlab是使用最廣泛的科學計算的軟體,在這個軟體上用於編寫計算程序的語言也叫Matlab。所以它也不是通用編程語言,只適用於科學計算,而且只能用在Matlab軟體。初學編程者不用考慮。
學好一門編程語言的方法就一個——大量地編程,書上題目做會之後,盡可能地參與實際的項目,這是最好的鍛煉。
9月
㈦ 怎麼在matlab中調用用c語言編寫的程序
通過把耗時長的函數用c語言實現,並編譯成mex函數可以加快執行速度。Matlab本身是不帶c語言的編譯器的,所以要求你的機器上已經安裝有VC,BC或Watcom
C中的一種。如果你在安裝Matlab時已經設置過編譯器,那麼現在你應該就可以使用mex命令來編譯c語言的程序了。如果當時沒有選,就在Matlab里鍵入mex
-setup,下面只要根據提示一步步設置就可以了。需要注意的是,較低版本的在設置編譯器路徑時,只能使用路徑名稱的8字元形式。比如我用的VC裝在路徑C:\PROGRAM
FILES\DEVSTUDIO下,那在設置路徑時就要寫成:「C:\PROGRA~1」這樣設置完之後,mex就可以執行了。為了測試你的路徑設置正確與否,把下面的程序存為hello.c。
/*hello.c*/
#include
"mex.h"
void
mexFunction(int
nlhs,
mxArray
*plhs[],
int
nrhs,
const
mxArray
*prhs[])
{
mexPrintf("hello,world!\n");
}
假設你把hello.c放在了C:\TEST\下,在Matlab里用CD
C:\TEST\
將當前目錄改為C:\
TEST\(注意,僅將C:\TEST\加入搜索路徑是沒有用的)。現在敲:
mex
hello.c
如果一切順利,編譯應該在出現編譯器提示信息後正常退出。如果你已將C:\TEST\加
入了搜索路徑,現在鍵入hello,程序會在屏幕上打出一行:
hello,world!
看看C\TEST\目錄下,你會發現多了一個文件:HELLO.DLL。這樣,第一個mex函數就算完成了。分析hello.c,可以看到程序的結構是十分簡單的,整個程序由一個介面子過程
mexFunction構成。
void
mexFunction(int
nlhs,
mxArray
*plhs[],
int
nrhs,
const
mxArray
*prhs[])
前面提到過,Matlab的mex函數有一定的介面規范,就是指這
nlhs:輸出參數數目
plhs:指向輸出參數的指針
nrhs:輸入參數數目
例如,使用
[a,b]=test(c,d,e)
調用mex函數test時,傳給test的這四個參數分別是
2,plhs,3,prhs
其中:
prhs[0]=c
prhs[1]=d
prhs[2]=e
當函數返回時,將會把你放在plhs[0],plhs[1]里的地址賦給a和b,達到返回數據的目的。
細心的你也許已經注意到,prhs[i]和plhs[i]都是指向類型mxArray類型數據的指針。
這個類型是在mex.h中定義的,事實上,在Matlab里大多數數據都是以這種類型存在。當然還有其他的數據類型,可以參考Apiguide.pdf里的介紹。
為了讓大家能更直觀地了解參數傳遞的過程,我們把hello.c改寫一下,使它能根據輸
入參數的變化給出不同的屏幕輸出:
//hello.c
2.0
#include
"mex.h"
void
mexFunction(int
nlhs,
mxArray
*plhs[],
int
nrhs,
const
mxArray
*prhs[])
{
int
i;
i=mxGetScalar(prhs[0]);
if(i==1)
mexPrintf("hello,world!\n");
else
mexPrintf("大家好!\n");
}
將這個程序編譯通過後,執行hello(1),屏幕上會打出:
hello,world!
而hello(0)將會得到:
大家好!
現在,程序hello已經可以根據輸入參數來給出相應的屏幕輸出。在這個程序里,除了用到了屏幕輸出函數mexPrintf(用法跟c里的printf函數幾乎完全一樣)外,還用到了一個函數:mxGetScalar,調用方式如下:
i=mxGetScalar(prhs[0]);
"Scalar"就是標量的意思。在Matlab里數據都是以數組的形式存在的,mxGetScalar的作用就是把通過prhs[0]傳遞進來的mxArray類型的指針指向的數據(標量)賦給C程序里的變數。這個變數本來應該是double類型的,通過強制類型轉換賦給了整形變數i。既然有標量,顯然還應該有矢量,否則矩陣就沒法傳了。看下面的程序:
//hello.c
2.1
#include
"mex.h"
void
mexFunction(int
nlhs,
mxArray
*plhs[],
int
nrhs,
const
mxArray
*prhs[])
{
int
*i;
i=mxGetPr(prhs[0]);
if(i[0]==1)
mexPrintf("hello,world!\n");
else
mexPrintf("大家好!\n");
}
這樣,就通過mxGetPr函數從指向mxArray類型數據的prhs[0]獲得了指向double類型的指針。
但是,還有個問題,如果輸入的不是單個的數據,而是向量或矩陣,那該怎麼處理呢
?通過mxGetPr只能得到指向這個矩陣的指針,如果我們不知道這個矩陣的確切大小,就
沒法對它進行計算。
為了解決這個問題,Matlab提供了兩個函數mxGetM和mxGetN來獲得傳進來參數的行數
和列數。下面常式的功能很簡單,就是獲得輸入的矩陣,把它在屏幕上顯示出來:
//show.c
1.0
#include
"mex.h"
#include
"mex.h"
void
mexFunction(int
nlhs,
mxArray
*plhs[],
int
nrhs,
const
mxArray
*prhs[])
{
double
*data;
int
M,N;
int
i,j;
data=mxGetPr(prhs[0]);
//獲得指向矩陣的指針
M=mxGetM(prhs[0]);
//獲得矩陣的行數
N=mxGetN(prhs[0]);
//獲得矩陣的列數
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
mexPrintf("%4.3f
",data[j*M+i]);
mexPrintf("\n");
}
}
編譯完成後,用下面的命令測試一下:
a=1:10;
b=[a;a+1];
show(a)
show(b)
需要注意的是,在Matlab里,矩陣第一行是從1開始的,而在C語言中,第一行的序數為零,Matlab里的矩陣元素b(i,j)在傳遞到C中的一維數組大data後對應於data[j*M+i]
。
輸入數據是在函數調用之前已經在Matlab里申請了內存的,由於mex函數與Matlab共用同一個地址空間,因而在prhs[]里傳遞指針就可以達到參數傳遞的目的。但是,輸出參數卻需要在mex函數內申請到內存空間,才能將指針放在plhs[]中傳遞出去。由於返回指針類型必須是mxArray,所以Matlab專門提供了一個函數:mxCreateDoubleMatrix來實現內存的申請,函數原型如下:
mxArray
*mxCreateDoubleMatrix(int
m,
int
n,
mxComplexity
ComplexFlag)
m:待申請矩陣的行數
n:待申請矩陣的列數
為矩陣申請內存後,得到的是mxArray類型的指針,就可以放在plhs[]里傳遞回去了。但是對這個新矩陣的處理,卻要在函數內完成,這時就需要用到前面介紹的mxGetPr。使用
mxGetPr獲得指向這個矩陣中數據區的指針(double類型)後,就可以對這個矩陣進行各種操作和運算了。下面的程序是在上面的show.c的基礎上稍作改變得到的,功能是將輸
//reverse.c
1.0
#include
"mex.h"
void
mexFunction(int
nlhs,
mxArray
*plhs[],
int
nrhs,
const
mxArray
*prhs[])
{
double
*inData;
double
*outData;
int
M,N;
int
i,j;
inData=mxGetPr(prhs[0]);
M=mxGetM(prhs[0]);
N=mxGetN(prhs[0]);
plhs[0]=mxCreateDoubleMatrix(M,N,mxREAL);
outData=mxGetPr(plhs[0]);
for(i=0;i<M;i++)
for(j=0;j<N;j++)
outData[j*M+i]=inData[(N-1-j)*M+i];
}
當然,Matlab里使用到的並不是只有double類型這一種矩陣,還有字元串類型、稀疏矩陣、結構類型矩陣等等,並提供了相應的處理函數。本文用到編制mex程序中最經常遇到的一些函數,其餘的詳細情況清參考Apiref.pdf。
通過前面兩部分的介紹,大家對參數的輸入和輸出方法應該有了基本的了解。具備了這些知識,就能夠滿足一般的編程需要了。但這些程序還有些小的缺陷,以前面介紹的re由於前面的常式中沒有對輸入、輸出參數的數目及類型進行檢查,導致程序的容錯性很差,以下程序則容錯性較好
#include
"mex.h"
void
mexFunction(int
nlhs,
mxArray
*plhs[],
int
nrhs,
const
mxArray
*prhs[])
{
double
*inData;
double
*outData;
int
M,N;
//異常處理
//異常處理
if(nrhs!=1)
mexErrMsgTxt("USAGE:
b=reverse(a)\n");
if(!mxIsDouble(prhs[0]))
mexErrMsgTxt("the
Input
Matrix
must
be
double!\n");
inData=mxGetPr(prhs[0]);
M=mxGetM(prhs[0]);
N=mxGetN(prhs[0]);
plhs[0]=mxCreateDoubleMatrix(M,N,mxREAL);
outData=mxGetPr(plhs[0]);
for(i=0;i<M;i++)
for(j=0;j<N;j++)
outData[j*M+i]=inData[(N-1-j)*M+i];
}
在上面的異常處理中,使用了兩個新的函數:mexErrMsgTxt和mxIsDouble。MexErrMsgTxt在給出出錯提示的同時退出當前程序的運行。MxIsDouble則用於判斷mxArray中的數據是否double類型。當然Matlab還提供了許多用於判斷其他數據類型的函數,這里不加詳述。
需要說明的是,Matlab提供的API中,函數前綴有mex-和mx-兩種。帶mx-前綴的大多是對mxArray數據進行操作的函數,如mxIsDouble,mxCreateDoubleMatrix等等。而帶mx前綴的則大多是與Matlab環境進行交互的函數,如mexPrintf,mxErrMsgTxt等等。了解了這一點,對在Apiref.pdf中查找所需的函數很有幫助。
至此為止,使用C編寫mex函數的基本過程已經介紹完了。
㈧ matlab和C語言編程是一回事嗎
這是兩者級別不同的語言。兩者的編譯方法以及編譯語言都不一樣。
區別就在於:
(1)兩者語言級別不同。Matlab是第4代語言,屬於高級語言,C語言是第3代中級語言。
(2)兩者用處不同。Matlab是一種腳本語言,主要用於數學計算科學計算,是一種商業數學軟體,是一種數值計算環境和編程語言,而C語言是一種面向過程程序設計語言,主要用於底層硬體或操作系統的程序設計,是一種通用的、程序式的編程語言,廣泛用於系統與應用軟體的開發。
(3)兩者語言特徵不同。C語言具有高效、靈活、功能豐富、表達力強和較高的移植性等特點,而Matlab本身基於矩陣運算,並無成長空間,且有一些插件是可以MATLAB代碼生成C語言。
會不會英語關系不大,只要願意花時間去背一些常用的單詞就可以的。
(8)matlabc語言編程入門教程擴展閱讀:
MATLAB是matrix&laboratory兩個詞的組合,意為矩陣工廠(矩陣實驗室)。
是由美國mathworks公司發布的主要面對科學計算、可視化以及互動式程序設計的高科技計算環境。它將數值分析、矩陣計算、科學數據可視化以及非線性動態系統的建模和模擬等諸多強大功能集成在一個易於使用的視窗環境中,
為科學研究、工程設計以及必須進行有效數值計算的眾多科學領域提供了一種全面的解決方案,並在很大程度上擺脫了傳統非互動式程序設計語言(如C、Fortran)的編輯模式,代表了當今國際科學計算軟體的先進水平。
MATLAB的基本數據單位是矩陣,它的指令表達式與數學、工程中常用的形式十分相似,
故用MATLAB來解算問題要比用C,FORTRAN等語言完成相同的事情簡捷得多,並且MATLAB也吸收了像Maple等軟體的優點,使MATLAB成為一個強大的數學軟體。
在新的版本中也加入了對C,FORTRAN,C++,JAVA的支持。
㈨ c語言編程怎樣入門
相對於其他編程語言,C語言還是比較難的。初學者需要注意一下幾點:
一是學習順序
先從熟悉簡單的C語言語法開始入門,然後再循序漸進,學習C++語法,WIN32、MFC、QT、網路編程,資料庫、數據結構、演算法、COM、STL等。構建一個完整的C語言知識體系。這需要一個比較漫長的學習積累的過程。語法入門部分大概2-3個月,其他部分需要學習和工作中慢慢理解和消化了。
二是學習方法
人的知識80%是通過眼睛獲取的,但是學習編程有所不同,除了看書、看視頻之外,關鍵是要勤動手,勤動腦。通過做大量的練習、項目實戰不斷積累代碼量。只有代碼量足夠多了,項目做的多了,才能算是真正學會了。項目能否完成,就是衡量是否學會的唯一標准。後期就是代碼的質量和優化問題了,這個只能在項目工作中慢慢積累經驗了。
最後強調一點,很多人學不會編程是因為掉坑裡了。就是教程或者書上的知識點之間跨越太大,作為一個初學者很難自己摸索出來,前面的知識點沒有掌握,接著學習後面的知識,肯定是學不會了。目前絕大多數編程書籍和教程或多或少都有這樣的弊端。自學能力比較強的人可以通過各種方法,參考各種網上的資料自己解決。但是大多數自學能力不是很強的人,只能依賴老師、同學、同事或者朋友幫忙指導,或者報名培訓機構,老師指導完成了。學習編程通常需要一些好的學習資料,包括紙質的書籍,視頻教程,課件,項目練習,代碼。零基礎入門的書籍推薦《明解C語言》、《C Primer Plus》,還有一本非常特別的匯編和C語言正向逆向結合的書編程達人內部教材《匯編、C語言基礎教程》也非常不錯,講解匯編和C語言的本質非常透徹,非常細致。視頻資料也是特別多了,各種視頻網站、論壇、自媒體都有,比如網易課堂、騰訊課堂、慕客網這些。還有一些論壇,比如CSDN、編程中國等。最重要的一點就是答疑服務,推薦愛達人的網站也很不錯,從零基礎入門到應用課程,配套的視頻、課件、代碼、項目、答疑服務都有,還可以兼職接單,學以致用。