久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

matlab學習心得

時間:2019-05-12 12:57:13下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《matlab學習心得》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《matlab學習心得》。

第一篇:matlab學習心得

編程心得

1.helpwin只是尋找函數類,一般不如用doc(相當于幫助文檔中的搜索),但在用doc搜索不到幫助文件時可用helpwin,如找有關的幫助等;打開格式非標準的mat或xls等數據文件如dat文件或無后綴名的文件時,不要用打開方式打開,而應先打開應用程序如MATLAB或excel,然后在應用程序中打開數據文件,這樣能得到正確的行數和列數;lookfor可對M文件的第一行進行關鍵字搜索,比help條件寬松;MATLAB大小寫有區分。用which搜索路徑;要打開matlab自帶的m文件直接用open即可,不需要找到路徑,會在當前目錄和set path的路徑中搜索。矩陣的運算注意:標量與矩陣進行四則運算時該標量與矩陣的每個元素進行運算;兩矩陣相乘左矩陣列數須等于右矩陣行數;矩陣除法有左除(反斜杠)和右除/(斜杠),AB=inv(A)*B,A/B=A*inv(B);方陣的乘方運算有四種:A^n,A^p,s^A,s.^A,其中A為方陣,n為整數,p為非整數,s為標量;A’表示矩陣A的轉置,一般選中了Hermitian(共軛)復選框則元素帶共軛;funm(A,’fun’)表示矩陣的函數運算,要求A是方陣,fun為矩陣運算函數名;給矩陣賦值時維數必須匹配,用方括號,一個分號為一行。

3.數組的運算注意:數組乘法運算符為.*,表示兩數組中對應元素相乘;數組的除法運算符為.和./,表示對應元素相除;數組與數組運算時,參與運算的數組必須同維,結果為數組中每個元素進行運算所得;直接用結構名賦值即省略了(1);varargout返回輸出變量list即一系列變量名稱;feval(@fun,var1,?)用var1,?試算[evaluate]fun的值;讀二進制文件常用fopen()和fread()組合,matlab讀fortran寫出的二進制文件時往往要在fopen()中加'b';讀文本文件常用textread()和fopen();fscanf()組合,要注意格式,最好讀完后對照打開看看。

4.標準差std(x,flag,dim)默認flag=0,dim=1計算公式為 的平方根,flag=1時分母為n;可通過h=figure(i),后用get(h)獲得圖形對象所有屬性的當前值,其格式為:屬性名=屬性值;結構數組可在域名后加(a,b)再加.變量名,調用時輸變量名可使用tab完成;利用struct函數一次輸入多個結構元素時注意用單元數組,用{}而非[]。

5. 左除和右除的兩邊不一定是方陣,當A為m*n矩陣,B為列向量時,AB表示A*X=B在最小平方意義上的解,需對A進行QR分解,mn時解通過(A'*A)(A'*b)求得,而A/B =(B'A')';積分可以查一下積分命令quad 或者 trapz。6.注解塊操作符%{和%}必須單獨成行否則不起應有作用;struct([])表示結構數組,name1.name2表示name1為結構數組;函數名切記不要與MATLAB內置函數重名否則會出現錯誤因為系統先從當前目錄尋找匹配的函數;MATLAB可以把程序制作的動畫生成avi格式的視頻,須把avifile(),getframe(),addframe(),close()配合起來使用。7.啟動notebook后word文檔的菜單欄中沒有出現Notebook菜單項,可以依次單擊工具-》自定義-》命令-》宏,選擇保存于mbook.dot上的宏TemplateProject.mwNewNotebook..MAIN(把他拖到菜單欄然后單擊,沒必要)就會出現Notebook菜單項;計算區(Calc Zone)不要弄,evaluate M-book一般也不要用;單元轉換為文本可以常用。

8. 低級文件I/O函數很重要,因為它可讀寫二進制文件,便于與FORTRAN結合;讀寫之前先用fopen(filename,mode),注意都要加單引號,返回值如ans=0表示操作成功,-1表示不成功;一定要注意r和w因為w會刪除原文件所有內容;讀用fread(fid,count,precision,skip)其中precision如'uint8=>char'讀取文本文件,注意在fclose(fid)之前是連續讀的,不指定precision默認按字節讀取可能會出現很多元素為0;fwrite(fid,A,precision,skip)用二進制格式寫入文件,skip參數對于將數據插入到已知長度的記錄中非常有用;重設文件指針位置用fseek(fid,offset,origin)表示在fid指定的文件上按照origin給出的參照點,相對移動offset個字節,注意如果指針不在開頭要重置到開頭origin應選'cof'當前位置而不選'bof'文件開始,重置完后可用ftell(fid)知道指針當前位置相對于bof的字節數,還可用ferror(fid)查詢錯誤信息;還可用frewind(fid)函數將文件位置指針返回到文件起始位置;從文本文件讀字符串行用fgets(fid,nchar)表示讀一行文本并帶有行結束符,每次讀nchar個字符直到遇上結束符。9.如果運行的M文件有錯誤,而且在命令窗口又要運行M文件中定義錯誤的內置函數時可能會出現錯誤,這時應改工作目錄;有些內置函數可在命令窗口運行但在M文件中運行可能會出現錯誤,如sphere(n);腳本M文件與命令窗口公用變量工作區,而函數M文件有單獨的變量工作區,切實注意了;關系操作表達式返回的是邏輯型值即0和1。

10.數組維數擴展時下標不要用1,因這是默認下標用1后結果是重新賦值;不同數組類型轉換如cell2struct等之前一定要先看數組尺寸size(array);變量名切記不要用函數名,否則調用函數時會出錯還不知錯在哪,因MATLAB優先使用變量名而非函數名,比如定義了變量max再調用max()函數時就會報錯Subscript indices must either be real positive integers or logicals;中括號加引號用于多個文件名可以,用于多個變量名不行;簡單統計量比如最大值,最小值,平均值加減后再統計和統計后再加減結果一樣;函數不管用或者出錯應檢查是否不小心加了等號。

11.設置坐標軸刻度和屬性時用set(gca,'xtick',數值數組);set(gca,'xticklabel',字符串數組);切記是label不要寫成lable;用box off可以去掉右邊和上邊的刻度和邊框;把右邊和上邊分別作為y和x軸可以加畫圖形,但最好不用plot而用line;有關坐標軸設置的例子可見我的程序plotNino.m;要實現坐標軸隔點標注數值且所有點間隔線均保留需設置兩次坐標軸,第一次顯示所有間隔線第二次用ax2=axes()后隔點標注;放大工具只對ax2有效;標注時字符矢量用{}且非數字字符必須加引號;注意annotation()中[x y w h]的x,y是對整個figure而言;標記單個數據點用scatter()即可。

12.MatLab小波分析工具箱中一些學習心得:進行多分辨率分析時,wavedec()得到的小波系數是由最后一層的低頻系數和各層的高頻系數首尾相連而成,不是相加;用wrcoef()可重構各單支系數的對應信號且saN+sdN+sdN-1+?+sd1近似等于原始信號s;用waverec()一次重構的結果和單支重構的和稍有差別但差別很小如e-15;用wavedec()時注意有些小波函數不能用如Morlet小波基等,具體可看wfilters();小波分解再重構后與原始信號相差最小的小波函數為db1即Haar小波基;

13.只有函數式M文件才能定義函數,腳本文件和函數不能寫入同一個m文件中,即腳本文件中不允許出現function()語句但可以調用同目錄下函數文件中的函數;函數文件要想保留一些中間變量的值就要在函數外部調用因為函數調用結束時會銷毀臨時變量空間,需另寫腳本文件,要不然就將需要導出的變量作為返回的參數或者用global申明全局變量;要使函數文件中的函數易被其他腳本文件調用,文件名最好為第一函數名;一張圖中畫多張子圖時注意subplot(‘Position’,[ ])和axes(‘OuterPosition’,[ ])在[]中值一樣時子圖的位置大小不一樣,axes的[]所給區域按比例縮小包含坐標軸標題等故值易確定但調用時要加(..,’Parent’,*),此外subplot()可有系統給定區域;

MATLAB中內置的函數

linspace(a,b,n)生成a~b之間線性分布的行向量,n默認值為100。

logspace(a,b,n)生成10^a~10^b之間按對數等分的n個元素的行向量,n默認50。zeros(m,n)生成m*n的全0矩陣;

ones(m,n)生成m*n的全1矩陣 rand(m,n)生成m*n均勻分布的單位間隔上隨機矩陣,取值范圍0.0~1.0 randn(m,n)生成m*n正態分布的隨機矩陣,取值范圍是整個實數區間

eye(m,n)生成m*n的單位矩陣; magic(n)生成n階魔方矩陣,n>=3 triu(X)生成X矩陣的上三角矩陣; tril(X)生成X矩陣的下三角矩陣

flipud(X)使矩陣沿水平軸上下翻轉; fliplr(X)使矩陣沿垂直軸左右翻轉;

Flipdim(X,dim)使矩陣沿特定軸翻轉; rot90(X)使矩陣逆時針旋轉90度 cat(n,A1,A2,?,Am)n=1時子矩陣上下排列,n=2時子矩陣左右排列,n=3時子矩陣數m為第三維; repmat(A,行,列,頁,??)模塊矩陣A按后邊格式重復排列

ndims(P)返回數組P的維數; size(P)返回向量其元素為數組各維的大小; length(P)返回數組P行數或列數的最大值

[L,U,P]=lu(X)矩陣X的三角分解,U為上三角,L為下三角,P為單位陣的行變換矩陣

[U,S,V]=svd(X)矩陣的奇異值分解,S為對角陣,U,V為酉矩陣,X=U*S*V’ [V,D]=eig(A,B,flag)由flag制定算法計算矩陣A和B的特征值D和特征向量V,flag的可能值為chol或qz;

[R,p]=chol(X)表示使用Cholesky分解算法,若X對稱正定則存在非奇異上三角陣R使R’*R=X,若X非正定則p為正整數R為有序上三角陣;[Q,R]=qr(A)

求正交矩陣Q和上三角陣R使A=QR;

T=schur(A,flag)返回正交矩陣U和schur矩陣T使A=U*T*U’;

rsf2csf(VR,DR)將實舒爾形式轉化成復舒爾形式; gsvd(A,B)廣義奇異值分解; qz(A,B)特征值問題的QZ分解; hess(A)海森伯格形式分解;

sparse(A)返回A的稀疏矩陣形式; full(S)將稀疏矩陣轉化為全元素矩陣; spy(S,’lineSpec’,markersize)用圖形顯示矩陣,點表示矩陣中非零元素位置。colmmd(S)返回稀疏矩陣列的最小度排序向量p,按p排列后的矩陣為S(:,p)。

setfield(ps,{i,j,k},域名,賦值)修改結構數組ps中域的存儲內容,返回維數為i*j*k。lower(string)把字符串中的大寫變為小寫。

strncmp(‘str1’,’str2’,n)比較兩字符串的前n個字符,str2可換為單元數組C,返回邏輯數組

lookfor name 尋找第一行注解H1中含有name的M文件。

findstr(str1,str2)先比較兩個字符串,然后在長的中找與短的匹配的子字符串,每找到一次返回匹配起始點的位置為數組元素。

fscanf(fid,format,size)從fid指定的文件讀size個數據并根據format指定的格式轉換,其中format如%c,%f,%d等,size為[m,n]時表示m*n矩陣按列存放,缺省讀全部數據; fprintf(fid,format,A)按format指定格式轉換矩陣A中數據并將它們寫到fid指定文件,缺省fid時,數據輸出在屏幕上。

Repmat(A,m,n)A為子矩陣,復制m*n次; fix(A)返回數組中每個元素取整后的值; reshape(A,m,n)把數組A進行重新排列,按列方式操作;

Prod(A)若A為向量則返回元素乘積,若A為矩陣則返回每列元素的乘積;

Permute(A,[a b c d])A為4維陣列,返回陣列的第1,2,3,4維為A的第a,b,c,d維 strcat(s1, s2, s3,...)把字符串或者單元數組s1,s2,s3進行水平連接

w=conv(u,v)返回向量u和v的卷積,若m = length(u),n = length(v)則,j = max(1,k+1-n): min(k,m),k=1:m+n-1 [V,D] = eig(A)返回A的特征向量矩陣V和特征值矩陣D [S.field] = deal(X)域名為field的所有域元素賦值為X

[Y1, Y2, Y3,...] = deal(X{:})復制單元數組的內容給變量Y1,Y2,Y3,? Num2cell(a,[i j])a為數值陣列,返回單元陣列每個單元為a保持第i,j維尺寸不變的數組

《MATLAB基礎與編程入門》

Page 2: MATLAB核心模塊有兩大分支分別以MATLAB為基礎和以simulink為基礎。MATLAB 2006b即MATLAB 7.3。MATLAB compiler能將M文件編譯生成為函數庫或可執行文件,使其能與其他語言如C/C++混合應用,MATLAB builder可將函數文件打包成com組件或.net組件、excel插件、java對象,將其應用程序算法集成到開發工具或應用軟件中。MATLAB的工具箱可提供函數給用戶直接使用,且其算法是開放和可擴展的。MATLAB提供了與各種設備進行數據I/O的交互工具和函數等。

Page 4: 工具箱包括:數學與數據分析,如spline 仿樣,mapping 繪圖、映射,genetic algorithm and direct research 遺傳算法和正變形研究等;數據采集與測量測試,如database 數據庫,excel link鏈接Excel等;信號處理與圖象處理,如system identification系統辨識,wavelet 小波分析,filter design 濾波設計等;控制系統設計與分析,如 fuzzy logic 模糊邏輯,robust control 強控制等;財經與金融,如 financial time series 金融時間序列,GARCH 廣義條件異方差等;應用程序集成與發布,如 MATLAB report generator 報告生成器,MATLAB web server 網絡服務器,MATLAB builder for.NET 編碼器等。Page 5: simulink是框圖設計環境,可對各種動態系統建模、分析和仿真,Stateflow可用來進行邏輯驅動過程的仿真。Simulink 可將用C、C++和fortran語言編寫的算法集成到框圖中,其實時代碼生成工具可進行代碼驗證。

Page 9: Real-Time Workship(RTW)可生成標準的C/C++代碼并具備生成其他語言代碼能力

《MATLAB編程基礎與典型應用》

Page 8: MATLAB默認每行命令產生的變量結果都顯示,加上英文狀態下;才不顯示。可用連續3個或以上的黑點?表示續行,但notebook中不能用。%表示其后一行的內容為注釋。Page 10: 常用操作指令包括:clc, clear, clf, who, whos, delete , which , clear all, help , save , save , load , diary , type , what。Page 13: 歷史命令窗口點右鍵有很多實用功能。當前目錄瀏覽器(CurrentDirectory)窗口可更改當前目錄,打開M文件,導入MAT文件數據。工作空間瀏覽器窗口點右鍵可對變量進行編輯、繪圖、保存,也可用save,load,whos,exist等命令管理變量。Page 17: 可用help命令在命令窗口顯示幫助內容,也可用helpwin命令打開幫助瀏覽器窗口并顯示指定主題信息。還可用lookfor命令搜索包含字符的命令行,一旦發現就可用ctrl+C推出搜索過程。Demos目錄下的主題信息提供圖文并茂的演示。Page 19: 變量名第一個字符必須是英文字母且區分大小寫,不需要事先聲明。一些關鍵字不能作為變量名使用如if,while,return,for等。系統預定義的變量和常數有ans,pi,eps,inf,nan,i,j,nargin,realmin,realmax,nargout,可被臨時覆蓋。Page 26: 提取矩陣元素時,序號按列排列。Page 37: 矩陣的乘方運算有四種。

Page 43: MATLAB中的關系運算符有<,<=,>,>=,==,~=;邏輯運算符有&,|,~,xor,&&(先決與),||(先決或),先決表示左邊的運算符合要求就不需執行右邊運算。Page 54: 稀疏矩陣大部分元素為0,故只需儲存非零元素的下標和元素值。Page 72: 數值數組和字符串數組中存儲單元的數據類型相同,使用()操作;單元數組中每個單元存放的數據可能都不一樣,使用{}操作,獲取單元數組內容時圓括號只顯示單元,花括號才顯示內容。

Page 77: 結構數組組織數據的能力比單元數組要強些,可通過struct(域名1,賦值,域名2,賦值??)函數創建;獲取結構數組域中的具體內容使用符號.,也可用專用函數getfield()獲取;修改結構數組中域存儲內容的函數是setfield()。

Page 81: 多項式以行向量的形式存放且以降冪形式出現,若缺少某冪次項則該項系數為0 Page 134: 句柄是圖形對象的標志代碼,標識代碼含有圖形對象的各種必要的屬性信息;圖形對象的所有屬性都是由屬性名和屬性值組成,對圖形對象屬性操作可實現不同表現效果,可通過句柄控制;用get(get(gca,'children'))命令可看到軸的子代的各種屬性值;可對圖形對象設置缺省對象屬性來實現繼承操作,還可用set(h,’.’,’.’)設置各種屬性。《精通MATLAB7編程與數據庫應用》

Page 5: 為調試程序而進入debug方式時,提示符變為K>>;運算符兩邊的空格隨意添加后無區別;在命令歷史中查找,可將光標定位于某行后敲要查找的語句的首字母;可將用得多的幾條語句選中后在右鍵菜單選”create shortcut”創立快捷鍵;命令窗口輸入pathtool或選File->Set path可設置搜索路徑。Page 19: 函數的輸入參數用圓括號括起來用逗號分隔,輸出參數在等式左邊用方括號;語句的續行可在結尾用省略號(?);一行中可寫多個語句,語句用逗號或分號隔開,若想寫完多行命令再運行可按shift + enter組合鍵;還可使用“Tab完成”,在命令和editor窗口寫入文件名、變量、結構和函數名時只寫入前面的幾個字符后按Tab鍵。Page 24: 變量名是否正確可用isvarname查看0表有誤;變量類型包括三種,常用的是局部變量,全局變量要用global聲明且每個使用函數都要聲明,永久變量(一直在內存中)要用persistent聲明。

Page 171: 程序開發的建議:

1. 化復雜為簡單:將每個任務做成一個獨立的函數,函數盡量短;用數學語言寫出步驟和流程,再轉換成程序語言;選擇正確的數據結構(如哪種數組)。

2. 遵循的原則:使用描述性的變量名和函數名,盡量不用縮寫;函數前面寫幫助的注解,說明函數功能;一行不要超出80列以便打印;函數只被另一個函數調用,把被調函數作為子函數與主函數放在同一個M文件上。

3. 函數命名的唯一性:用which –all 函數名 檢驗。

4. 分步寫程序,分步調試:對較大程序,一次寫成一部分,然后測試;能正常工作且輸出結果合理,再寫下一部分;修改也一樣,每次調試一部分。

5. 程序最后測試:用debugger,可記錄下被執行的每一行代碼;用不同的輸入組合測試,讓每一行至少執行一次。Page 173: 在命令窗口的命令提示符下輸入M文件名可運行該M文件;MATLAB與其它語言的區別之一是過程控制語句可能用到數組或矩陣;對if條件判斷,若邏輯表達式非標量,那么它的所有元素值都非0,if條件才能滿足,也可以是空數組,表示條件為假。Page 175: 分支語句switch后的表達式可以是函數或數值或字符串;循環有兩種:次數確定的和依條件結束的;for循環中可用數組控制循環次數,MATLAB把列數作為循環次數;for語句可寫在一行,分隔符用逗號;continue回到循環頭,break退出循環,嵌套循環中都作用最內層循環;錯誤控制語句try?catch?end執行時,try?catch范圍內出現錯誤可轉到代碼段catch?end做出響應,若此段還有錯誤則結束程序執行;return語句可強制結束當前運行的程序。Page 179: 腳本(scripts)與函數的區別:腳本簡單執行一系列語句和需多次運行的文件,不能接受輸入參數也不返回輸出結果,變量保存在基本工作區;函數有定義語句function,有輸入輸出,變量有單獨工作區;輸出用[],輸入用()。

Page 181: 默認下M文件名與第一個函數名相同,若不同需用文件名引用函數;用exist函數識別是否為M文件函數,非0則是;用which函數找到M文件函數的源碼;

《MATLAB程序設計與應用》

Page 242: 在M-book 中,在word與MATLAB之間進行傳遞的內容稱為單元(Cell),輸入輸出是指對MATLAB而言;m-book最重要的操作就是輸入單元的定義與執行,其方法是:先在文檔中輸入命令后選中命令行,再按組合鍵Alt + D(=Define Input Cell),則命令行變成綠色的輸入單元,然后按組合鍵Ctrl + Enter(=Evaluate Cell),執行后產生藍色的輸出單元;也可選中命令行后直接按組合鍵Ctrl + Enter輸入并執行;注意:命令和標點須在英文狀態下輸入,MATLAB的續行符不能用于m-book,它會自動換行無需加回車符,修改后執行新結果會覆蓋掉老結果。

Page 247: 可用evaluate loop實現單元的循環執行,用purge output cells刪去選中的輸出單元,用undefine cells把單元轉換為文本;輸出格式控制包括輸出數據控制和圖形控制,可通過notebook->notebook options->embed figures in m-book是否選中控制輸出圖形是否鑲嵌在m-book文檔中;若輸出圖形背景色不是白色可在MATLAB命令窗口運行whitebg('white')再重新運行輸入單元;可通過“樣式和格式”修改Output等的樣式。Page 251: Simulink主要對動態系統進行建模、仿真和分析,提供圖形用戶界面GUI,用戶可用鼠標從模塊庫中調用標準模塊并適當連接以建模同時用參數對話框設置參數,建模后選擇仿真參數和數值算法便可啟動仿真程序對系統仿真;simulink仿真模型表現為方框圖,其擴展名為.mdl,數學上體現了一組微分方程或差分方程,通常包含3類模塊:信源(source)、系統(system)、信宿(sink儀器);可用format菜單調整模塊方向,改變模塊前景色、背景填充色或者模型背景色,產生陰影效果等,處理模塊名,給連線加標志;模型連接須從一個模塊的輸出端連到另一個模塊的輸入端,默認是折線要用斜線需選中連線再按住shift鍵拖動;連線分支操作是鼠標移到分支點位置先按下ctrl鍵再拖動到目標模塊的輸入端;選定模塊后再用模型編輯窗口edit菜單可設置模塊參數,模塊屬性等。

Page 265: 系統仿真過程中,事先須對仿真算法、輸出模式等仿真參數進行設置,方法是:從模型編輯窗口simulation菜單中選擇configuration parameters命令打開仿真參數對話框設置仿真參數;設置仿真參數完后,從simulation菜單中選擇start項便可啟動當前模型的仿真,此時stop命令變成可選以供中途停止;為觀察仿真結果變化軌跡可以:把輸出結果送給scope模塊或者XY graph模塊,把仿真結果送到輸出端口并作為返回變量后用MATLAB命令繪制該變量變化曲線,把輸出結果送到to workspace模塊從而直接存入工作空間后用繪圖命令繪制出變量變化曲線;系統仿真步驟如下:建立系統仿真模型包括添加模塊、設置模塊參數以及進行模塊連接等操作,設置仿真參數,啟動仿真并分析仿真結果。

Page 134: 要在MATLAB中使用其他軟件的圖象需用[x,c]=imread(filename,fmt)讀取該圖象,其圖像通常由數據矩陣x和色彩矩陣c組成,真彩色圖像的數據矩陣為三維,三個面上數據分別是RGB三種顏色的強度值,每個元素對應圖像中一個像素點;可用colormap(c)函數設置色圖;影片動畫制作有三個函數:moviein(n)建立一個足夠大的n列矩陣,a(:,n)=getframe將n幅畫面信息保存矩陣a中,movie(a,m)播放由矩陣a定義的畫面m次;實時動畫制作是先畫出初始圖形,再計算活動對象新位置并顯示新對象擦除舊對象,可通過EraseMode屬性實現一般選Xor,只繪制與屏幕顏色不一致的原對象點;可通過改變數據屬性來重新繪圖,沒改變一次就應用drawnow命令刷新屏幕一次。

Page 311: mat文件是MATLAB數據存儲的默認文件格式,以雙精度二進制格式保存數據,它由128字節的文件頭和其后的數據單元組成;MATLAB提供了一個子程序庫使用戶可以在C/C++,FORTRAN中直接調用這些子程序來創建和讀取mat文件;操作mat文件的API函數封裝于兩個標準庫文件:libmat.lib和libmx.lib,存放在binwin32相應子文件夾中,在externinclude中有與前面兩個庫文件對應的.def文件:libmat.def,libmx.def,其導出函數原型位于同目錄下的mat.h,matrix.h中,前者包含mat文件的創建讀寫等函數的定義,后者包含MATLAB中基本數據類型和矩陣的定義;在FORTRAN語言中mat文件操作函數有:matOpen(filename,mode), matClose(mfp), matDeleteVariable(mfp,name), matGetDir(mfp,name), matPutVariable(mfp,name,pm), matGutVariable(mfp,name,pm), matPutVariableAsGlobal(mfp,name,pm),其中mfp為指向mat文件的指針,name是讀寫mat文件的矩陣名稱,num為矩陣數目,pm是mxArray結構體指針,mode為打開文件方式。Page 315: MATLAB編譯器(MCC)可將m語言編寫的函數文件(腳本文件不行)轉換成C/C++源代碼,經編譯鏈接后可生成函數庫、可執行程序、COM組件等,從而提高程序執行效率豐富程序開發手段并隱藏算法源代碼;使用MCC需安裝MATLAB和一種C/C++編譯器,如VC++6.0,要生成獨立應用程序需安裝相應數學庫和圖形庫;編譯器配置即執行命令:mbuild –setup 后按提示選取一種編譯器(通常安裝VC++6.0后選擇它)生成批處理文件并注冊相關dll文件,mbuild通過調用外部的C/C++編譯器把M文件翻譯成C/C++源代碼然后與MATLAB的C/C++數學庫、圖形庫鏈接得到獨立可執行程序;執行命令為:mcc –m –I /files_source(源文件路徑)–d /files_target(目標文件路徑)*.m ;離開MATLAB執行exe文件時要把生成的所有文件包括相應庫文件全部帶上。

Page 319: MATLAB提供了客戶/服務器(Client/Server,C/S)功能,利用動態數據交換(DynamicDataExchange,DDE)功能和ActiveX自動化服務功能,可以實現在其他程序中對MATLAB程序及函數的調用,且通過mxArray與工作空間交換數據,從而增強其他語言的數值計算能力和數據可視化能力;MATLAB引擎是一組函數庫,他提供了一種在用戶程序進程中與MATLAB進程通信的方法,在WINDOWS下使用ActiveX技術實現,使用組件對象模型(ComponentObjectModel,COM)接口;C語言MATLAB計算引擎包括引擎函數和mx-函數兩類,常用引擎函數有engOpen, engClose, engGetVariable, engPutVariable, engEvalString等,mx-函數的具體用法參見幫助文件中section為External Interfaces Reference部分;引擎編程首先要將mxArray轉換成MATLAB中可操作的形式,將源程序編寫存盤后再用mex命令對源程序文件進行編譯,注意源文件中不能有中文(即使是注釋);mex用來編譯簡單文件合適,但工程復雜時需在VC++6.0的集成環境中編譯鏈接。

Page 324: 常用FORTRAN引擎函數有engOpen(startcmd), engClose(ep), engGetVariable(ep,name), engPutVariable(ep,name,pm), engEvalString(ep,command)等,其中startcmd 為引擎參數(字符型),ep為引擎指針(整型),name為矩陣名,pm為mxArray矩陣指針,command為MATLAB命令;在MATLAB命令窗口使用的編譯命令是optsfile=[matlabroot 'binwin32mexoptsdf60engmatopts.bat'];mex('-f',optsfile,'*.f90');但有時候沒有df60engmatopts.bat文件,這時候需在VisualFortran的集成環境中編譯鏈接;可先用VF打開該f90文件然后選Tools->Options->Directories,在Include files中添加matlabrootexterninclude,在Library files中添加externlibwin32microsoft,然后選Project->Settings->Link,在Object modules中添加libmx.lib libmat.lib libeng.lib,再用默認的編譯鏈接可生成可執行文件*.exe。

Page 325: MEX(MATLAB executable)動態鏈接函數接口使MATLAB可直接調用C,FORTRAN語言編寫的算法程序,應用如下:對已有的C,FORTRAN子程序通過添加入口程序mexFunction可由MATLAB調用而不必重編M文件,可把要求大量循環迭代的部分用C語言編寫為MEX文件提高計算速度,直接控制硬件如數據采集卡等;MEX文件優于M文件執行,用C語言編寫MEX文件的特點是編程靈活指針功能強,但應注意C和MATLAB中數據存儲方式的差別,其源程序包括兩部分:入口子程序(作用是建立通信聯系),計算子程序(可是普通的C程序),注意都要包括頭文件mex.h;可在命令窗口輸入mex filename.c編譯MEX程序,但在VC環境下更好,項目類型為Win32 Dynamic-link library,(設置環境和參數都較麻煩)編譯鏈接無誤后產生*.dll,運行時會自動打開新的MATLAB應用程序。

Page 330: FORTRAN語言數值計算功能強但指針功能弱,其MEX文件同樣由入口子程序和計算子程序組成,它只支持雙精度類型和字符串類型的數據;mexFunction()中參數的意義和C語言一樣,入口子程序也和C語言大體相同,編譯時先輸入命令mex –setup選擇DigitalVisualFortran6.0作為默認編譯器,有些MATLAB軟件里沒有(如我的只能用VC++);集成環境中編譯步驟如下:新建一個項目類型為FortranDynamicLinkLibrary,選Project->Add to project->new->Text file創建與項目同名的定義文件(*.def),選Tools->options->directories-> include files添加externinclude,library files添加libwin32digitaldf60,選project->settings-> output file name輸入*.dll,Object modeles增加libmx.lib,libmex.lib,將文件加入到項目中再進行編譯鏈接,可生成*.dll;將MATLAB數據接口和其他開發環境結合可充分發揮數值計算長處避開執行效率低的不足,MATLAB還提供了與excel中數據交互的工具箱、VB算法庫及MATLABwebServer可通過HTTP協議在安裝了web服務器主機上提供MATLAB計算遠程服務,硬件操作方面MATLAB提供了串行通信對象操縱串行口并可通過mex程序調用設備驅動程序。《MATLAB7.x程序設計語言》

Page 266: 建立多維數組有四種方法:利用下標建立,如2×2的矩陣也可看作是2×2×1的數組可擴展維數,標量輸入表示擴展維元素均相同;利用特殊數組函數(如rand, randn, ones等)可直接產生多維數組,也可用repmat(A,m,n)直接產生;利用cat(n,A,B)連接A,B矩陣,n為指定維數,連接時是最后一維變化;編寫M文件將記錄組合成多維數組;ndims獲得維數,size得到各維尺寸,whos得到數組存儲格式。

Page 269: 多維陣列(即數組)的下標訪問即采用各維的下標訪問其元素,可用向量來表示多個元素,: 表示其他維固定該維變化的所有元素還可用a:b取出部分元素;陣列重新排列可用reshape函數按列重排,用squeeze函數刪除單點維(尺寸size為1的維);序列變換可用permute函數改變指定維次序。

Page 272: 面向向量的函數(如sum,mean,prod等)通常在第一個非單點維上操作且允許指定的維,也有例外如cross函數;元素對元素的操作函數(如三角、指數函數等)對每個元素進行同樣操作,算術、邏輯、關系操作符也按元素對元素方式處理,有一個為標量則對陣列所有元素與該標量進行同樣操作;面向矩陣的函數(如線性代數函數)不能用于多維陣列,需從中取出維數為2的一部分進行操作;RGB(m,n,3)的三色原理Color=0.3*RGB(:,:,1)+0.59*RGB(:,:,2)+0.11*RGB(:,:,3)。Page 273: 結構陣列由多個域構成,不同域可存放不同類型的數據,可用結構名(下標).域名對結構陣列賦值;用結構名顯示結構信息,只有一個結構元素顯示各元素值,可用rmfield函數刪除錯誤域名;用struct函數可產生一個結構元素的結構數組,再利用單元數組{}可輸入多個結構元素;訪問結構數組中的元素可用下標,利用getfield(結構名,{下標},’域名’,{a:b,c:d})可得到域的部分值(域元素),利用setfield函數可改變結構的域值。Page 277: MATLAB函數和操作符可用于結構數組中的域和域元素,可用循環來完成指定功能,還可對同名域的數據用函數直接處理;結構陣列的數據組織方式有平面組織和元素對元素組織等,如對三個獨立存儲矩陣,平面組織方式下每個域是一個平面的數據(矩陣),這樣容易提取平面數據并擴展平面個數,訪問子集時稍麻煩,元素對元素組織結構的建立需用循環,訪問子集較容易但訪問平面還要用循環;結構陣列的域值可以是另一個已定義過的結構,即結構嵌套,如用struct建立一個結構元素再用賦值語句*.原域名.域名擴展。

Page 282: 單元陣列中每個單元可以是標量、向量、矩陣、字符陣列、結構陣列、多維陣列等,在建立單元陣列之前應確保不存在同名數值陣列否則會導致錯誤;對單元陣列賦值時應使用花括號,放左邊較方便,可用cell(m,n,?)預分配空單元陣列;顯示單元數組可直接輸入數組名顯示單元信息,也可采用celldisp函數顯示詳細信息和cellplot函數顯示存儲結構圖形;使用單元陣列數據也用下標訪問但注意括號,訪問一個單元用花括號,訪問單元中的元素和部分單元用圓括號;刪除元素也用賦空值,如A(:,2)=[]后A可能成了一維單元陣列。

Page 285: 花括號內采用冒號操作符相當于指示多個獨立的單元內容如A{m:n},形如[a{1};a{2}]可構造數值陣列;可用單元數組代替函數輸入、輸出、顯示操作等的變量列表,如[a{1:2}]=eig(B)此時a{1}為特征向量(模態)矩陣a{2}為特征值(規范)矩陣;利用下標可將函數和操作符應用于單元陣列,用循環可對所有單元進行處理;單元陣列比結構陣列更具包容性,它可在一條賦值語句中訪問多個數據域,如使用[a,b]=c{1:2}相當于a=s.f1;b=s.f2其中c為單元陣列,s為等價結構陣列;利用花括號、cell函數及賦值語句可建立嵌套的單元陣列,不用cell函數預分配完全可以但賦值系統會花更多時間;單元陣列與數值陣列之間的轉換應采用循環程序,num2cell可實現數值到單元。

Page 290: 多維單元數組可利用cat函數連接產生,如A,B為2×2的單元數組則可用cat(3,A,B)生成2×2×2的多維單元數組;多維結構數組可利用直接賦值或cat函數產生,定義后可用結構的域名來訪問還可對其數據應用函數和操作符;利用單元數組還可將具有不同域結構的結構數組存儲在一起,每個單元為一個結構數組;多維數值陣列適用于規則數據,結構陣列適用于不一致的數據,單元陣列可用于任意數據混合;一般結構名首字母大寫,單元數組名大寫,其余名稱小寫,較復雜的數據庫用單元中有結構,結構中有數值和字符的形式。

Page 314: MATLAB中字符以其ASCII碼表示,每個字符都采用16位的ASCII碼存儲,字符串即一維字符數組;double函數可把字符串中每個字符轉變成ASCII碼,char函數可把ASCII碼數組轉變成對應字符串;建立二維字符數組時應注意確保每行上的字符數相等,方法是先disp每行字符串的長度length()后用blanks函數在較短的字符串末尾補上空格;從字符數組中提取字符串時,可用deblank函數刪除末尾多余的空格;利用cellstr函數可將字符數組變換成字符串單元數組,每個單元均為字符串且已刪除末尾空格,利用char函數可進行其逆操作,且可自動在每行末尾加上適當空格。

Page 317: 比較兩字符串是否完全相同用strcmp函數,strcmpi函數比較時忽略大小寫,strncmp函數比較兩字符串前n個字符是否相同,相同時,返回邏輯真,值為1不同為0;可用MATLAB關系操作符逐字比較兩個字符串是否相同或大小關系,采用的是ASCII碼,表達式為真值為1;可用isletter函數逐字比較字符串是否全由字母構成,是則為1,isspace函數逐字比較字符串是否有空格,還可用或操作符檢測字符串是否全由字母和空格構成。Page 319: 利用findstr和strrep函數可實現字符串中部分字符的搜索與替代;用strtok函數可找出第一個分隔符之前的字符串,若有n個單詞可用循環和array=strvcat(string,n)從英文句子中提取單詞;MATLAB提供了一組函數如int2str,num2str,bin2dec,hex2dec,base2dec等在各種數制和字符串之間進行變換;只有用num2str函數才可將含小數的數值變換成字符串如在圖形標記中使用數值,用mat2str函數可將矩陣變換成字符串形式。

第二篇:matlab學習心得

學習MATLAB 感想 學習了 MATLAB 這門課程,我了解該軟件的基本功能,也知道 了該軟件在我們生活中的重要地位。隨著社會的不斷發展,科技 的不斷進步,計算機的普及,它也被應用在越來越多的方面。MATLAB 的基本數據單位是矩陣,它的指令表達式與數學、工 程中常用的形式十分相似,故用 MATLAB 來解算問題要比用 C,FORTRAN 等語言完成相同的事情簡捷得多,MATLAB 的最突出的 特點就是簡潔。MATLAB相對于其他的一些編程軟件有許多的優點:

一、語言簡潔緊湊,使用方便靈活,庫函數極其豐富。

二、運算符豐富。

三、MATLAB既具有結構化的控制語句(如for循環、while循環),又有面向對象編程的特性。

四、語法限制不嚴格,程序設計自由度大。

五、程序的可移植性很好,基本上不做修改就可以在各種型號的計 算機和操作系統上運行。

六、MATLAB的圖形功能強大。用madlab創建矩陣時,方法有兩種:第一、可以直接依次輸入矩 陣各行各列的元素,但矩陣元素必須用[ ]括住,矩陣元素必須用逗號 或空格分隔,在[ ]內矩陣的行與行之間必須用分號分隔。第二、用 MATLAB函數創建矩陣。MATLAB可以進行矩陣的加減、乘除的元 素,求可逆矩陣、轉置矩陣,求矩陣的特征值,求線性方程組等等。MATLAB的功能是非常強大的,MATLAB不僅有強大的運算功 能,它還有強大的繪圖功能,我對它的了解也僅僅就是一點點,或許 說還沒有入門。比如說它含有豐富的內建函數,例如數學函數中的三 角函數、復函數、多項式函數、數據分析函數的求平均值、最大最小 值、排序等,以及邏輯/選擇函數如if-else等,還有用來模擬隨機發 生事件的隨機函數。這些我都不了解。雖學習MATLAB的時間雖然很短,但卻讓我了解到了它的強大和 它的功能。我想就算時間足夠,老師也不能把所有的都講解給我們,因為一個軟件的功能需要我們自己不斷的去摸索,老師也不可能知道 所有。老師只是個指路的明燈,最終的學習還是要靠自己。而且在摸 索過程中,我們能夠發現和體會學習的快樂!

第三篇:Matlab學習心得

? matlab博大精深,說到底我也只不過是個初學者,只是學的時間比新手長了一點,現在寫幾句給新手,希望能給你們有點幫助 1 學Matlab并不難,難的是學會怎么用。

2不要試圖掌握matlab的每一個功能,熟悉和你專業最相關的部分就可以了。不要問:明天要交作業了,哪位大俠幫忙寫個程序吧,或初學matlab,不懂呀,大哥大姐幫忙寫個程序之類的話

不要等到要用到才去學,如果你有興趣,你有時間,你可以多學些東西,說不定什么時候就用了,機會只偏愛那些有準備的頭腦,到時候就不會說什么,要做東西想讓人指點,基礎的東西來不及仔細看了,一寫程序嗎,低級錯誤滿天飛 不要說:不要讓我看matlab英文的幫助我看不懂--誰都是從不懂到懂的 不要擔心:我編程能力差,我一定用不好matlab。6 不要只問不學 7 學maltab要有耐心 看到某本書中或論壇的帖子中解決問題的方法要試著解決類似的問題,要舉一反三,要學會變通 有了問題先自己想,察看幫助,1個小時后沒有結果再問別人,不要一有問題就發問,然后什么都不管了,把希望寄托在別人身上 10 學會用搜索引擎,在網上可以找到很多資料,有的問題一搜索就能找到的,就不要來問別人了 11要多動腦,多動手寫程序、調試,看程序時候多想幾個為什么,理解別人程序中精華的東西,多自己調調程序,可以改改程序,把知識轉成自己的,弄懂一兩個經典例子比粗粗的看一大書要好,值得一提是不是一下子就能看懂相對比較長,比較復雜的程序的,要做的是自己慢慢去分析,利用已經有的資料和幫助,等慢慢搞懂它,要多看幾遍,相信多看一遍你就會有一些新的認識,一直到你已經掌握里例子的精華。多讀matlab高手寫的程序,帖子,找到一個高手,在幾個大的論壇可以搜索出一大堆的帖子,然后慢慢去看吧,從中可以學到很多東西,也許你會發現很多你都看不懂,這很正常,別人寫程序考慮的是能實現這樣的功能,運行效率等問題,而不是考慮是不是很容易能讓別人理解,你就看你現在能看懂,再看些通過你斷點調試,查help能看明白的,看不懂的就先放下,遇到好的和看不懂,你又很挺感興趣的話題,你先收藏起來,過段時間你再回頭看看,你會發現,每看一遍,你就會多懂一些東西,當你第三遍甚至第四遍看同一個程序的時候,也許你就會有豁然開朗的感覺。一個比較長的程序,首先不要怕長,把它分解成一句一句,一句一句看懂它。要明白一口吃不成胖子,好東西要慢慢體會,才能領會。電腦上復制粘貼很方便,對于別人解決的你專業上的問題,最好自己寫一遍,這樣印象深刻,對于不懂的函數用法的函數,help中查查,能看懂多少算多少,對于程序斷點調試一遍,弄清楚每個語句的功能,14 盡量擺脫c編程的習慣,總愛用循環,能不用的循環的盡量不用,掌握矢量化的精髓 善于總結,學習過的知識,看過好的帖子可以收藏起來,過段時間再復習一下,一段時間的積累,你會發現你的水平在慢慢提高 16 多用help,see also lookfor get,set 等常用命令 要大膽的去試,試過才知道可不可以,如有人問可不可以把多個子程序放在一個m文件中,呵呵,試試不就知道了 多參與討論,不要只關心自己的問題,也經常關注別人的帖子,從中也可以學到不少東西的 提醒一句,不要做只會下資料而不看的收藏家,這樣對你沒什么意義,書不在于多,真的看一兩本書也就夠了,以后要用的時候,再去查書,一味的東看看西看看,見了別人的資料,不關好不好,就留信箱的人,我感覺也不該這樣,有了那么多資料,就別想著還有沒有比這更好的了,開始學吧先寫這么多吧,希望對新手能有點用 感覺語言是相通的,不一定只針對matlab這門語言

如何寫程序,如果你還是初學者,那么盡量不要復制粘貼,那樣你是永遠也無法學會寫程序的。另外也不要對著別人的程序,一個字一個字敲進去,那樣的話你只能成為一名優秀的打字員。一個比較好的方法是先讀懂他,理清他的思路,然后自己動手寫,寫不出來的時間再看看別人的程序,然后對照的看,你的和他的程序差異在哪里,寫的過程就是提高的過程。

程序運行有錯誤怎么辦,好多錯誤。首先,別害怕錯誤,這是每一個人都會碰到的問題,大牛,小蝦都一樣,你對你自己說 這不機會又來了,調程序的過程就是提高的過程。不要一遇到錯誤就來論壇發問了,如何調,關鍵是看錯誤提示,看錯誤的類型及出現在哪條語句上。好好練自己的調試能力,這不僅可以幫你找到一些錯誤,有是碰到一些讀不懂的程序,借助斷點調試可以幫你讀懂程序

還不行怎么辦,用搜索引擎找答案(有時候把錯誤提示輸進去就可以找到答案了)

還不行,這才發貼和別人交流。。

寫程序原則 盡量寫的簡單 通俗容易懂,讓那些不如你聰明的人都能看懂,命名的時候做到見名知意,寫的時間多加點注釋,不然,不要說別人讀不懂你的程序,等過幾天,你自己也讀不懂了,可以看看matlab里的函數,注釋也寫的很詳細,當你覺得有些方法比較常用的時候,你可以封裝成函數,加上一些說明,以后要用的時候,直接調用就可以了,注重代碼的重用性。

勿在浮砂筑高臺,基礎很重要,為什么學matlab,如果你只是把它當成 c c++的附屬品,用這些語言的思維來寫一些奇怪的類matlab程序,我想你還是直接用c 或 c ++更合適,不要一開始就想著用matlab 做出什么東西,好好看一本matlab的基礎書,這些基礎對你以后的進階會很有幫助。再說混合編程,什么都不懂就想著去混合編程是不實際的,maltab版本 vs 的版本不同,都會對混合編程影響的。所以結果是對著別人的例子來做也不一定會做出來,一是別人講的有些細節問題沒講清楚,二是版本問題。就算做出來,如果不明白為什么要這樣做,又有多大意義呢。然后自己做一個,又不會了。說這些的目的無非是希望想做混合編程的朋友多了解一些基礎的東西,否則在混合編程這一塊上會浪費很多時間,結果還是沒有解決問題。

7.0系列 深入淺出matalb混合編程這本書是值得一看的。多看幫助之類的話這里就不多說了。

Recent developments in linear quadtree-based geographic information systems

第四篇:MATLAB學習心得

MATLAB學習心得

MATLAB命令

要查詢某一命令是在搜尋路徑的何處,可用which命令: >>which fact E:studycodematlabfact.m

what 列出當前目錄下的.m文件和.mat who:顯示當前所有變量的簡單列表 whos:顯示當前所有變量的詳細信息

disp打印;clc清屏;clf清圖;

close all 關閉所有圖形; clear 清除所有變量

esc 清除一行ctrl+c中斷程序運行

tic 開始計時;shift+enter換行;toc停止計時 % 行注釋; %{……%} 塊注釋

%% + 空格 + 模塊名添加程序塊使得模塊化 三個小黑點連續換行;或者shift+enter語句換行 cd 路徑改變當前目錄

elseif沒有空格 switch

case(不需要用break跳出)...otherwise end

funtool函數計算器

eval('MATLAB表達式')執行一個MATLAB表達式 example: >>for i=1:3 >>eval(['book',num2str(i),'=',num2str(2*i-1)]);>>end book1 = 1 book2 = 3 book3 = 5

MATLAB求方差

var(x)= var(x,0)除以n-1 var(x,1)除以n

MATLAB繪圖

matlab語法與繪圖文件夾,詳細介紹了MATLAB基本運算、MATLAB基本平面繪圖、MATLAB基本立體繪圖

x=linspace(-2, 2, 25);% 在x軸上取25點 y=linspace(-2, 2, 25);% 在y軸上取25點

[xx,yy]=meshgrid(x, y);% xx和yy都是25x25的矩陣

zz=xx.*exp(-xx.^2-yy.^2);% 計算函數值,zz也是25x25的矩陣 mesh(xx, yy, zz);surf(xx, yy, zz);

% 畫出立體網狀圖 % 畫出立體曲面圖 figure(n):打開編號為n的圖形窗口

subplot(m,n,p):分割圖形顯示窗口為m*n塊,p為子塊編號 axis([xminxmaxyminymax]):給出區域

text(x,y,'字符串')在坐標(x,y)處顯示字符串 gtext('字符串')通過鼠標選擇說明文字的位置 title('圖標標題')xlabel('x坐標軸名稱')ylabel('y坐標軸名稱')legend('','',''...)圖例名 grid on/off hold on/off 矩陣運算

For vectors, ALL(V)returns logical 1(TRUE)if none of the elements of the vector are zero.所有的數都非零返回1 ANY True if any element of a vector is a nonzero number or islogical 1(TRUE).ANY ignores entries that are NaN(Not a Number).sum(A):按列求和

repmat(A,m,n):將矩陣復制m*n份

矩陣變換 rot90逆時針旋轉90度flipud上下翻轉fllplr左右翻轉

單元數組可以存放不同的數據類型

>>A{1,1}=magic(3);A{1,2}='djk';A{2,1}=sym('sin(x)+cos(x)');A = [3x3 double] 'djk' [1x1 sym ] [] cellplot(A):圖形化顯示單元數組的結構

行簡化階梯型矩陣 rref(A)求矩陣的秩 rank(A)det(A)求行列式 [V D] = eig(A):

D對角線上的元素為A的特征值,V為相對應的特征向量構成的矩陣 當V滿秩時,A可對角化,inv(V)*A*V = D 擬合和插值

cftoolSurface Fitting Tool.polytool(x,y,2)多項式擬合 rstool(x,y,'model',alpha)

最小二乘法線性擬合 function zxecf(x,y)clear z = polyfit(x,y,1);

f = poly2sym(z);poly2str(z,'x');plot(x,y,'r*');hold on ezplot(f,[xminxmax]);

// ezplot畫符號函數

擬合工具箱 %{ yy = polyval(z,x);plot(x,y,'r*',x,yy);%}

函數的3種使用方法

利用function直接定義函數,要求文件名和函數名一致,函數文件名不能由數字組成 函數句柄實現對函數的間接調用 fhandle = @M文件名

匿名函數:fhandle = @(arglist)expr由輸入參數列表arglist和表達式expr確定的函數創建句柄并將此句柄返回給變量fhandle 內聯函數:f = inline('expr','arglist')example: >>fhandle = @(x,y)(sin(x)+cos(y)+1)>>fhandle(pi/2,0)3 >>f = inline('sin(x)+cos(y)+1','x','y');>>f(pi/2,0)3 function out=f(x,y)out = sin(x)+cos(y)+1;

解方程組

解線性方程組 solve 解微分方程組dsolve 解數值解龍哥庫塔 ode y=dsolve('Dyt=y0*y')不明白

符號表達式

syms一次可定義多個符號變量sym建立單個符號 y=sym('sin(x)+cos(x)');diff(f,x,n)求符號表達式f關于x的n階導數

int(f,r,x0,x1)f為積分符號表達式,r為積分變量,x0,x1為積分上下限 example: syms x y;f = 2*x+y;h = subs(f,{x,y},{1:3,5:7});% h = [7,10,13];

多項式

系數矩陣p 符號表示:s=poly2sym(p)poly2str(p,'x')以字符串的形式查看以x為變量的函數

系數表示:sym2poly(s)多項式求值:polyval(p,數或矩陣)多項式求導polyder(p)求積分polyint(p)r = poly(p)求矩陣的特征多項式的系數 roots(r)求多項式的根即p

MATLAB編程

輸入輸出 x=inputdlg('輸入說明文字');x=str2num(cell2mat(x));

age=input('how old are you:')

disp(age)fprintf('my age is %d.n',age);% 和C語言里的printf差不多

data.txt: 1 2 3 4 5 6 7 8 9

fid = fopen('data.txt','r');line = fgetl(fid);str2num(line);

A = load('data.txt');

save 默認將當前所有變量存到當前目錄下的MATLAB.mat save mywork 默認存成.mat格式

% 存到A中,再對A進行操作

% 讀取一行 % 得到 1 2 3 % 有沒有類似C語言的輸入

savemydata.mat v1 % Use with literal filename save 'my data file.mat' v1 % Use when filename has spaces save(savefile, 'v1')% Use when filename is stored in a variable load 裝載當前目錄下的MATLAB.mat load new.txt / load('new.txt')當前目錄下不支持中文 load('路徑名+文件名',變量名列表)xlsread('路徑名+文件名')讀取excel文件

第五篇:MATLAB學習心得

MATLAB學習報告

一. 對MATLAB的認識

正如課本《MATLAB教程及實訓》中的前言所說,MATLAB是MathWords公司于1984年開發的,目前已經發展成國際上最流行、應用最廣泛的科學與工程計算軟件之一。MATLAB集合矩陣云運算、數值分析、圖形顯示和仿真等于一體,被廣泛應用于自動控制、數學運算、計算機技術、圖像信號處理、汽車工業、語音處理等行業。MATLAB它將計算、可視化和編程等功能同時集于一個易于開發的環境。MATLAB主要應用于數學計算、系統建模與仿真、數學分析與可視化、科學與工程制圖和用戶界面設計等。

目前,MATLAB已經成為應用代數、自動控制理論、數字信號處理、動態系統仿真和金融等專業的基本數學工具,各國高校紛紛將MATLAB正式列入本科生和研究生課程的教書計劃中,成為學生必須掌握的軟件之一。

MATLAB是matrix laboratory的縮寫,它的產生是與數學計算有密切的關系。從1980年發展到現在已經是一個交互式開發系統,其基本數據要素是矩陣。MATLAB系統是由MATLAB開發環境和MATLAB語言,MATLAB數學函數庫、MATLAB圖形處理系統和MATLAB應用程序接口(APL)5部分組成。

MATLAB的有以下特點

1運算功能強大

2編程效率高3強大而智能化的作圖功能 4可擴展性強 5Simulink 動態仿真功能

二. 我對MATLAB的掌握程度

在短課時選擇了本書1、2、3、4、5、7章的內容學習

1.MATLAB R2010a軟件的概述(略)。2.MATLAB常見字符及基本運算

在本人的自主學習以及老師的授課下我已經初略的掌握了MATLAB R2010a的基本使用方法:MATLAB R2010a的開發環境、MATLAB R2010a的其他管理、MATLAB的文件處理工具、MATLAB R2010a的幫助系統

(1)數據類型 數組:字符型、數值型、元胞型、結構體型、Java型和函數句柄,其中數值型有包括單精度型和雙精度型。常數

例如”a” “x”(關鍵字如if、while 等不能作為變量名)整數、復數和浮點數的類型與具體用法。

這一整章學習起來毫不費勁,這主要是因為上一學期學習了的c語言。

(2)矩陣和數組的算數運算

數組的創建,其中包括空數組還有向量的運用法則以及特殊矩陣和數組。其次是數組的操作,其中數組的元素、子矩陣的產生和數組的賦值以及矩陣的合并與數組的刪除。矩陣和數組的函數。

字符串、創建字符串、與字符串函數的熟練運用、日期與時間、日期和時間的表達式、日期時間的函數的使用、關系運算和邏輯運算、關系運算符的使用與邏輯運算符的使用以及運算符的優先級等

總體學習上是有些不足,總是忘記,這得不斷重復的記憶才行。

3.數據的可視化掌握

首先MATLAB的數據可視化需要掌握四大點

二維繪圖

二維繪圖需要掌握其一般步驟以及基本繪圖的函數,多個圖形的繪制以及設置曲線的方式、坐標軸和圖形的注釋。課本P81.例題3-1繪制一個正弦波形,繪制的正弦曲線圖略,具體操作如下:

》x=0:0.1:10 》y=sin(x);

》plot(x,y)

%根據x和y繪制二位曲線圖

程序分析:plot函數自動創建Figure 1圖形窗口斌顯示繪制的圖形,橫坐標是x,縱坐標是y。

特殊圖形和坐標的繪制 MATLAB的圖形窗口 基本三維繪圖命令

三維曲線與直線圖的繪制重要掌握

4.符號運算

先來一道例題創建符號變量和表達式 》x=sym(’x’);》syms a b c 》y=a*x~2+b*x+c y= a*x~2+b*x+c 可以在Workspace中看到,x、a、b、c和y都是符號變量,y是由符號變量計算產生的。

此章節符號較多且其運算規則也相對來說比較復雜。但是這一章節卻是MATLAB語言以及編程的重點基礎,更是要非常熟練的掌握。一分耕耘一分收獲,經過不斷重復的記憶我已經也能大部分符號運算都能知道其用法以及運算規律。

5.程序設計和M文件

此章節主要有:

分配控制語句:if結構,swich結構 循環控制語句:for循環,while循環 Break和continue語句 錯誤控制語句 流程控制命令 M文件結構

M文件編輯和調試窗口 M腳本文件和M函數文件

第七章節與C語言大部分相同或者雷士,有C語言的基礎學起來不難,但這一章節卻異常重要,更是要學會編程的思想,這是有點難度的。程序控制不在多說因為與C語言大體相同。但這一章的函數的使用與C語言不同,需要分開來記憶,總的來看學的還是不錯的,但聽班上的有些同學說很難記憶,因為與C語言有沖突。這一章節我還學習了M文件的結構、函數的句柄和inline對象,這些倒是和Java語言有的相似。倒也不難理解。還有函數的繪圖與數值的分析。

7.MATLAB高級圖像設計與simulink仿真環境

三. 收獲與心得

收獲:

上學期學習高數的時候,總有那么難的數學函數要解答,一些二維或者三維的函數繪圖圖形又復雜。在學習完這門課程后知道了原來這些繪制的圖片可以由MATLAB繪制出來的。這讓我知道了MATLAB可以用在數學上。而且是高等數學習者必備的一款軟件。現在我也可以繪制一些復雜的函數。我想這也是一項很大的收獲。在仿真中可以仿真一些復雜的電路原理圖,而我這個專業是跟電路有著密切的關系。其用處之大不言而喻,我想這也將是我最大的收獲了。另外值得一提的是學習MATLAB語言可以建立我們另一種思考問題的思維。這種思想難得可貴。

學習心得:

這學期的學習MATLAB,由于前幾節課沒有認真聽,總以為和C語言一樣簡單也,到后來拉下的課程比較多,老師有說要寫學習報告來計算期末成績,所以不得不自學拉下的課程,這使我非常煩躁和不安,但我們都是這樣過來的。以至于一直延續大大一而不可更改,直到這學期的MATLAB學習。

學習有時候并不是一個人的事情,獨自一人學習效率不會太,我們可以多向他人請教或許會更好。

這學期剛開始接觸MATLAB語言也是用著以前的學習方法。慢慢的感覺到不對,書本上是學會了,但是一到真槍實戰的干就不行了。后來想想就是學習方法的問題。實踐、得實踐才行。之后我便邊學邊用電腦實踐。果不其然,效果大大提升。總而言之,學習MATLAB的方法是邊學習邊實踐,效果成倍增加。學習MATLAB語言,其實是學習MATLAB的編程思想,另一種思考問題的思維。它交給我一種建立模型分析問題的結構化思維方式,任何事物,從不同的角度看,都可以想象成一個從頭到尾、環環相扣的系統,我們想要了解整個系統的功能就必須以每一塊結構為思維對象,層層分析最后得出客觀規律的正確結果。

對于這門課程的反思:

當我第一次看到這本書的內容時,覺得有了c語言的基礎,學習起來一樣好學,所以前面一直沒認真聽課,也給老師帶來了消極的影響,到了后面,我不得不自己學習,這帶給我諸多煩惱,后悔沒有認真去聽課,經過我認真的反思,我才覺悟到在課堂上認真聽講和擁有一個良好的學習態度是多么的重要。最后感謝老師對授與我們這門課的知識。

參考文獻:曹弋、劉懷、王恩榮.MATBLE教程及實訓【M】.北京:機械工業出版社,2013

MATLAB學習報告

專業班級: 姓名: 學號:

指導老師:

下載matlab學習心得word格式文檔
下載matlab學習心得.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    matlab學習心得

    學習MATLAB的心得體會 隨著期末的臨近,本學期的MATLAB的學習也就此落下了帷幕。回顧我之前學習MATLAB的歷程,我有以下幾點感悟: 1. 要有耐心。在編程序的時候少不了的要出現許......

    MATLAB學習心得

    學習Matlab對我的幫助及感想 專業:通信工程 班級:141 姓名:張焱 學號:2014136123 不知是對老師的好感還是因為專業的需要,當c語言的學習結束后我主動選擇了學習Matlab。以前的......

    MATLAB學習心得體

    MATLAB學習心得體 真正接觸matlab已經一學期左右,我很喜歡matlab的簡單的語法,易于繪制圖形一開始就感覺跟變魔術一樣簡單的語句就會有精美的圖形這就更加讓我對他如癡如......

    matlab學習心得5則范文

    matlab學習心得 王信權 39172215 學習matlab是聽說它是一個功能強大的數學軟件,但是正被微積分的計算纏身,聽說有一個高級的計算器當然高興,以后可以偷懶了,當然現在不能偷懶。......

    matlab學習心得[五篇范文]

    1 回車:表示一個命令結束 2 一個命令行可以輸入若干條命令,各命令之間以逗號分隔。若一條命令后帶有分號,逗號可以省略。 3 若一條命令很長,可在一條物理行之后加上3個小黑點并......

    對matlab的學習心得

    Matlab的學習心得 通過初步對matlab的學習,我覺得收獲很大。我了解到matlab是一個功能很大的數學實驗軟件,即一個很好的計算機數學軟件平臺。我在學習matlab主要是圍繞實驗,初......

    Matlab學習心得[優秀范文5篇]

    Matlab學習心得 這個學期我們學習了Matlab,總體來說,這是一門挺難的課程。當然我們的課時也是挺少的,我們也只是粗略的學習了下,所以對這門課程并不是很熟悉。不過學習了之后還......

    MATLAB秦志宏學習心得(范文大全)

    MATLAB學習心得秦志宏電氣0901班 略述MATLAB所學內容 1.轉置運算符(’)可以來初始化行向量。 2.first:incr:last命令的應用,例如1:2:10意思就是在1和10 以1為開頭間隔2取值. 3.矩......

主站蜘蛛池模板: 色香阁综合无码国产在线| 一本一道精品欧美中文字幕| 国产午夜精品一区二区三区软件| 精品久久久久久无码人妻vr| 色悠久久久久综合网伊人| 亚洲欧美日产综合在线| 老鲁夜夜老鲁| 无码人妻品一区二区三区精99| 无码欧美成人AAAA三区在线| 国产综合精品久久丫| 中文人妻av久久人妻水蜜桃| 麻豆精品国产精华精华液好用吗| 国产精品老熟女露脸视频| 在线观看国产亚洲视频免费| 精品三级久久久久电影网| 18禁免费无码无遮挡不卡网站| 久久久久国产精品人妻aⅴ天堂| 亚洲va久久久噜噜噜久久男同| 娇小萝被两个黑人用半米长| 亚洲一区二区三区在线观看网站| 久久996re热这里只有精品无码| 人妻内射一区二区在线视频| 中国真实偷乱视频| 国产午夜精品一区二区三区不卡| 久久欧美一区二区三区性牲奴| 综合亚洲伊人午夜网| 成人精品一区日本无码网| 国产精品久久久久9999无码| 少妇人妻丰满做爰xxx| 亚洲 自拍 欧美 日韩 丝袜| 麻豆国产97在线 | 中文| 久久激情日本亚洲欧洲国产中文| 亚洲熟妇丰满多毛xxxx| 国产网红主播精品一区| 无码a∨高潮抽搐流白浆| 国产av天堂无码一区二区三区| 午夜无码视频| 四虎国产精品永久在线| 久久www成人片免费看| 亚洲国产av最新地址| 无码人妻丰满熟妇区bbbbxxxx|