




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、1 Matlab經(jīng)驗之談1.1 使用demo指令查看例子1.2 Out of Memory在MATLAB的command window中輸入feature ('memstats'),可以得到內(nèi)存信息。輸入memory可以得到大略的。1.2.1 升級內(nèi)存和升級64位系統(tǒng)1.2.2 增加虛擬內(nèi)存如何提升虛擬內(nèi)存?系統(tǒng)虛擬內(nèi)存的提升是否意味著matlab虛擬內(nèi)存的提升?方法一:利用win7本身設(shè)置。計算機右鍵屬性高級系統(tǒng)設(shè)置高級設(shè)置高級更改取消自動管理自定義大小方法二:用下面方法可使win7 32位OS下用于matlab的虛擬內(nèi)存增加到3G。設(shè)置:開始-所有程序-附件,右擊命令提示符
2、,選擇“以管理員身份運行”,輸入:bcdedit /set IncreaseUserVa 3072 回車,重啟電腦。取消:開始-所有程序-附件,右擊命令提示符,選擇“以管理員身份運行”,輸入:bcdedit /deletevalue IncreaseUserVa 回車,重啟電腦。1.2.3 采用pack(在命令行輸入 pack 整理內(nèi)存空間)1.2.4 使用稀疏矩陣sparse1.2.5 遇到的大的文件分塊/分行讀取文件1.3 加快程序的運行速度1.3.1 向量化編程1.3.2 預(yù)定義變量1.3.3 利用預(yù)置函數(shù),盡量不自己編程1.4 Matlab各個版本的兼容性問題本人安裝了2009b和20
3、14b(a是上半年的,b是下半年的)。統(tǒng)一一下,好像差異還蠻多的。1.4.1 使用polyfit是遇到差異在win7系統(tǒng)中在2009b 中運行sym2poly無問題。在win10系統(tǒng)中在2009b中運行sym2poly基本不能有正確結(jié)果,提取的系數(shù)每次都變,搞不懂為什么,可能高版本的matlab與win10更加兼容。在win10系統(tǒng)中在2014b中運行sym2poly無問題。1.4.2 使用simulink時遇到差異1.4.2.1 總體模型報錯2009b中建立的mdl模型到2014b中報錯,需要新建一個mdl,把原模型復(fù)制到其中,并使用2014b的powergui。同樣,在2014b中建立的m
4、dl模型在2009b中完全沒法用。2014b的simulink模型后綴名為slx或者mdl。哎,還是m文件比較穩(wěn)定。1.4.2.2 simpowersystems的移動2014b中的simpowersystems移動至simscape的子目錄下。1.4.2.3 2014b中simulink的scope變強大1.4.3 使用GUI時遇到差異2009b中建立的GUI可以在2014b中打開并正常使用,但是GUI在2014b中做任何改動后回到2009b,不能正常使用。所以利用GUI創(chuàng)建的界面要注意版本問題。網(wǎng)上說,利用m文件創(chuàng)建的uicontrols沒有這個問題,更靈活。(BTW,這樣每次響應(yīng)都要用循
5、環(huán)來判斷,也很煩啊)1.5 濾波器設(shè)計工具箱1.5.1 步驟a.打開濾波器設(shè)計工具箱:fdatool;b.在界面中設(shè)置Resongse Type、Design Method、階數(shù)order、采樣頻率Fs和其他;c.注意:一般情況下order可以選擇Minimum Order。但如果設(shè)計的濾波器采樣頻率很高或者其他情況,導(dǎo)致這樣選擇時速度很慢,可以指定階數(shù)order;另外采樣頻率Fs基本上與需要濾波的信號的仿真頻率相等;d.設(shè)計好的濾波器可以生成m文件(FileàGenerate M-file)或者函數(shù)句柄(FileàExportàExport As Objects
6、),以便使用,使用格式為:y2=filter(濾波m函數(shù)或函數(shù)句柄,y1)1.5.21.6 曲線擬合工具箱(cftool或者sftool)1.6.1 cftool1.6.2 sftool1.6.3 如何利用command window或者m文件實現(xiàn)曲線擬合利用fit命令,最基本的命令如下,其中l(wèi)ibname就是對應(yīng)cftool里的type of fit(擬合類型)。cfun = fit(xdata,ydata,libname)其中l(wèi)ibname選項可以用cflibhelp命令查看,出來cftool中預(yù)定義的幾種擬合類型,也可以任意指定函數(shù),但是這樣就要設(shè)置初始值,詳情help fit。如指數(shù)擬
7、合分為fit(xdata,ydata,exp1)和fit(xdata,ydata,exp2),分別為單指數(shù)和雙指數(shù)擬合。例如TRV的工頻擬合和擬合系數(shù)的選取:>> temp gof=fit(x',y','exp2')temp = General model Exp2: temp(x) = a*exp(b*x) + c*exp(d*x) Coefficients (with 95% confidence bounds): a = 421.6 (395.4, 447.7) b = -1.022e-005 (-1.081e-005, -9.624e-006
8、) c = 781.2 (753.8, 808.6) d = -7.954e-008 (-1.933e-007, 3.42e-008)gof = sse: 0.4131 rsquare: 1.0000 dfe: 6 adjrsquare: 1.0000 rmse: 0.2624>> temp.aans = 421.5943>> temp.bans = -1.0216e-0051.6.3.1 polyfit的centering和scalingpolyfit是多項式擬合,如果數(shù)據(jù)變化比較快,直接擬合可能會warning。如為TRV擬合多項式,如下:curve1= polyf
9、it(x_1c_a,y_1c_a,n_x);在這種情況下,使用如下命令不會警告,使用了數(shù)據(jù)的平均值(mean)和方差(std)進行數(shù)據(jù)的縮放。但是要注意縮放后的數(shù)據(jù)擬合的多項式要經(jīng)過處理才能被原始數(shù)據(jù)使用。curve1,mu= polyfit(x_1c_a,y_1c_a,n_x);這個問題可見論壇的帖子:1.7 符號計算工具箱1.7.11.7.21.8 并行計算工具箱1.8.11.8.21.9 GUI相關(guān)1.9.1 GUI文件名的修改在兩種情況下需要對已經(jīng)建立的GUI文件名進行修改:1. 命名不合適;2. 直接在以前的編寫的GUI上改編成其他的程序(里面很多功能不需要更改),但是GUI名需要修
10、改修改的方法(未驗證):1. 用Guide打開GUI,file-save as,重命名GUI,會自動生成并打開新的fig文件和m文件,有關(guān)的callback屬性全部自動修改。然后再將子函數(shù)或者子文件copy過去(2007a及之后可行)。2. 手動修改,逐個修改函數(shù)名1.9.2 在已有的GUI界面上添加新的GUI界面1.10 繪圖高級繪圖函數(shù):plot,plot3,loglog,semilogx,semilogy,plotyy,zplot(zplot3)底層繪圖函數(shù):line,patch,fill,area1.10.1 畫圖和畫圖工具使用GUI工具創(chuàng)建和定義圖形:plot工具箱調(diào)用命令plott
11、ools(GUI界面的編輯圖形工具,方便)包括3個panel:Figure Palette,Plot Browser,Property Editor(figureàview)1.10.2 數(shù)據(jù)探索工具使用GUI工具交互式提取圖形信息工具包括:Data Cursor,(縮放圖形 zoom in and out),(移動圖形),(3D旋轉(zhuǎn))等。1.10.3 圖形注釋注:在MATLAB中,axes是創(chuàng)建坐標(biāo)軸對象,axis是修改坐標(biāo)軸范圍注釋內(nèi)容包括:text,arrow,colorbar,對齊,line,legend,rectangle,ellipse等注釋工具包括:GUI和函數(shù)如何使注
12、釋跟隨坐標(biāo)軸動,使用pin:1.10.3.1 text annotation文本注釋Adding Text Annotations to Graphs文本注釋可以用command(text和gtext函數(shù))命令,也可以用plotedit工具箱。給一個figure添加文本注釋,不僅可以利用text的string,還可以利用title,xlabel,ylabel,zlabel函數(shù)。1.10.4 基礎(chǔ)畫圖命令1.10.4.1 創(chuàng)建figurea.創(chuàng)建figurefigure創(chuàng)建新的figure并使它為當(dāng)前figurefigure(h)使h對應(yīng)的figure為當(dāng)前的figureb.一個figure上創(chuàng)
13、建多個plotsubplotc.使目標(biāo)axes為當(dāng)前axes方法一:用鼠標(biāo)點擊當(dāng)前目標(biāo)方法二:subplot(m,n,i)命令方法三:subplot(h)命令d.改變figure的配色方案函數(shù)colordefcolordef whitecolordef blackcolordef none1.10.4.2 使用高級畫圖函數(shù)plot;plot3;loglog;semilogx;semilogy;plotyy;1.10.4.3 matrix的plot1.10.4.4 繪制虛部和復(fù)數(shù)(imaginary和complex)real part和imaginary part實部和虛部1.10.4.5 雙Y
14、軸繪圖plotyy1.10.4.6 設(shè)置坐標(biāo)軸特性a.坐標(biāo)軸設(shè)置基本命令axescreates a new axes object with the specified characteristicsaxisSets values that affect the current axes object (the most recently created or the last clicked on).getsetgcab.坐標(biāo)軸范圍和刻度半自動范圍:axis(-Inf 5 2 2.5)坐標(biāo)軸刻度標(biāo)記:set(gca,'ytick',2 2.1 2.2 2.3 2.4 2.5)
15、c.如何改變已經(jīng)存在的曲線的特性d.設(shè)置縱橫比axis normal;axis square;axis equal;axis equal tight;1.10.5 創(chuàng)建特殊圖形1.10.5.1 bar and area Graph柱狀圖命令:bar,harh,bar3,bar3h,area1.10.5.2 Pie Chart命令:pie1.10.5.3 Histgram命令:hist,rose1.10.5.4 Discrete Data Graph命令:stem,stem3,stairs1.10.5.5 Direction and Velocity Vector Graph命令:compass
16、(與polar的區(qū)別),feather,quiver,quiver31.10.5.6 Contour Plot命令:contour,contour3,contourf,contourc,meshc,surfc,clabel1.10.5.7 Interactive Plotting命令:ginput,waitforbuttonpress1.10.5.8 Animation制作動畫有三種方式,每種方式適用于不同的情況1:保存圖片序列,并重播(適用于每一幀很復(fù)雜的movie)2:重復(fù)擦除和繪制對象3:對對象的XData,YData,ZData,重新賦值1.10.6 顯示位圖你知道位圖和矢量圖的區(qū)別嗎
17、?(見文檔)1.10.7 打印和輸出圖片1.10.8 圖形對象句柄1.10.9 figure特性1.10.10 axes特性1.10.11 專題:Graphics1.10.11.1 3-D Visualization1.10.11.2 Creating Graphical User Interfaces1.11 text annotation文本注釋Adding Text Annotations to Graphs文本注釋可以用command(text和gtext函數(shù))命令,也可以用plotedit工具箱。給一個figure添加文本注釋,不僅可以利用text的string,還可以利用title
18、,xlabel,ylabel,zlabel函數(shù)。1.11.11.11.21.11.31.12 What Is Model-Based Design?(基于模型設(shè)計)2 BOOK-MatlabProgramming for Engineers1.1 matlab介紹a) 介紹了matlab的優(yōu)缺點。優(yōu)點無法盡數(shù),缺點是:matlab為解釋型語言,因此運算速度較c,c+等編譯型語言慢;正版matlab價格很貴b) matlab各個窗口(workspace,command window,command history,current folder,editor etc)的作用,docking/und
19、ocking windows方式c) 關(guān)于如何set path。方法一:fileàset path。方法二:運用built-in函數(shù):userpath、addpath(添加directory to matlab search path),path(display all matlab search path),path2rc(Add current directory to MATLAB search path),rmpath(Remove directory from MATLAB search path),cd(display current directory)。d) 一些重要
20、的指令。clc(清空command window的指令),clear(variables),clf(清楚figure window),help vs lookfor,ctrl+C(終止執(zhí)行,regain control),diary filename,diary off/on1.2 matlab基礎(chǔ)1.2.1 變量和數(shù)組變量和數(shù)組的定義,調(diào)用。matlab數(shù)據(jù)類型主要包括double(浮點數(shù)floating number)、char(字符串string)、邏輯值(logical value(true/false)。1.2.2 變量賦值(assign)變量賦值的四種方法(assignment s
21、tatement,shortcut expression,built-in function,keyboard input)1.2.3 多維度數(shù)組多維數(shù)組在內(nèi)存中的存儲順序和多維數(shù)組的調(diào)用(access)1.2.4 子數(shù)組a) end函數(shù)b) 用matrix或者vector給數(shù)組中子數(shù)組的賦值,維數(shù)必須matchc) 用scalar給數(shù)組中子數(shù)組的賦值,不用考慮dimension,子數(shù)組中所有位置的元素等于這個scalar1.2.5 一些預(yù)定義的數(shù)值some predefined values such as pi,nan,inf,eps,clock,date,nas etc。在數(shù)學(xué)中,復(fù)數(shù)中
22、的虛部一般用i;在工程中,復(fù)數(shù)中的虛部一般用j,因為要和電流i區(qū)分。1.2.6 數(shù)據(jù)的顯示a) 不適用分號(leave the semicolon off the end of a statement)b) 利用fileàpreference或者format command改變數(shù)據(jù)格式c) 利用display/disp函數(shù)(通常結(jié)合num2str或int2str等)d) 利用fprintf函數(shù)(注意:此函數(shù)不能顯示復(fù)數(shù)的虛部)1.2.7 數(shù)據(jù)文件這里只簡述save和load兩個函數(shù)。a) save數(shù)據(jù)可以保存為.mat文件(save filename variable),保存了變量名
23、,變量類型和數(shù)據(jù),但是僅能在matlab環(huán)境下共享數(shù)據(jù)可以保存為.dat文件(save -ascii filename.dat variable),僅僅保存了數(shù)據(jù),但是可以供其他軟件使用,但是貌似只能將單一的char或者double保存為dat文件,如何是混合兩種數(shù)據(jù)類型的cell則不能保存為ASCII碼的dat文件b) loadload .mat文件,可以保存mat文件中的所有信息,包括變量名(注意這里的變量名是之前進行命名的)等load除mat文件以外的文件,都將其看作ASCII文件。當(dāng)然也可以通過load mat filename.dat將其強制以mat打開,但可能會報錯。而且將字符串s
24、ave為dat文件再用load打開后,文件中是ASCII對應(yīng)的十進制數(shù),使用要注意啊。此外,由于load出來的變量信息中不包含變量名信息,所以變量名與所load的文件同名。1.2.8 標(biāo)量和數(shù)組運算標(biāo)量(scalar)運算就用代數(shù)(algebra)知識就行了數(shù)組的運算分為數(shù)組運算(點乘element-wise)和矩陣運算。矩陣運算可以用來求解linear simultaneous equation。1.2.9 運算的優(yōu)先級Hierarchy of operationThe rules generally follow the normal rules of algebra1.2.10 matl
25、ab內(nèi)建函數(shù)a) 選擇性結(jié)果matlab內(nèi)建函數(shù)的返回值不止一個,看你如何調(diào)用,所以調(diào)用一個函數(shù)時,可以help一下。b) 內(nèi)建函數(shù)的輸入可以使數(shù)組arrayc) 常用的matlab函數(shù),習(xí)慣使用Browser(matlab是支持復(fù)數(shù)運算的,看sqrt和roots的區(qū)別)1.2.11 plot函數(shù)簡單介紹notice:數(shù)的求解用的element-wisea) plot基本應(yīng)用,包括注釋,網(wǎng)格線什么的b) 打印plot(print函數(shù))c) 將plot出的figure window保存為各種格式的圖片d) 在一個figure里同時對多個函數(shù)作圖e) 線的顏色,線的符號,線的形式,圖例(老版本用數(shù)
26、字表示位置,新位置不看,具體看每個版本的help)f) 對數(shù)坐標(biāo)1.2.12 three examples基本的編程習(xí)慣:data dictionary,discription of the script file,comment and the unit。1.2.13 調(diào)試程序a) 語法錯誤b) 運行時錯誤c) 邏輯錯誤編寫好的程序的第一步:所有變量初始化,不確定優(yōu)先級時利用parentheses來確定,確認(rèn)built-in函數(shù)的使用1.3 分支語句和程序設(shè)計1.3.1 自上而下的編程方法簡介程序設(shè)計的五個步驟:a) 明確你所要解決的問題b) 定義程序的輸入和輸出c) 設(shè)計程序的算法d) 把
27、算法轉(zhuǎn)化為matlab語言e) 測試matlab程序(包括單元測試,子程序聯(lián)合測試,完整測試(分為alpha版本和beta版本)在大編程項目中:1/3的時間用來計劃做什么,如何做;1/6的時間用來編程;1/2的時間用來測試。1.3.2 偽代碼的使用偽代碼不就是注釋嘛?1.3.3 邏輯數(shù)據(jù)類型邏輯數(shù)據(jù)類型(true/false)由兩種運算符產(chǎn)生:關(guān)系運算符和邏輯運算符。邏輯值在內(nèi)存中只占一個比特位(Byte),而一般的,如double數(shù)據(jù)要占據(jù)8Byte。邏輯數(shù)據(jù)類型和數(shù)值可以混合使用,而不報錯。在應(yīng)該使用數(shù)值的語句中如果使用了邏輯數(shù)據(jù)類型true/false,true/false會作為1/0來
28、使用;同樣,在應(yīng)該使用邏輯數(shù)據(jù)類型的語句中如果使用了數(shù)值,非零數(shù)值會作為true來使用,0會作為false來使用。注意:real函數(shù)將邏輯數(shù)據(jù)轉(zhuǎn)化為數(shù)值;logical函數(shù)將數(shù)值轉(zhuǎn)化為邏輯數(shù)據(jù)。邏輯運算的結(jié)果在command window里顯示的是0/1,但是在workspace里可以看到是logical value。1.3.3.1 關(guān)系運算符關(guān)系運算符可用來比較數(shù)值或者字符串。比較數(shù)組時,可以是大小相等的兩個數(shù)組或者其中一個是scalar比較字符串時,兩個字符串的長度要相等a) 關(guān)系運算符=和=運用時的注意點舍入誤差(roundoff error)pi是無理數(shù),所以理論上sin(pi)=0所
29、以判斷數(shù)值的相等時,用abs(a-b)<=eps(nearly equal)1.3.3.2 邏輯運算符邏輯運算符可用來比較一個或者兩個邏輯操作對象。邏輯與運算(&和&&)&可以比較數(shù)組和標(biāo)量,且計算兩個operand后才給出比較結(jié)果;&&只可以進行邏輯位運算(matlab實數(shù)進行邏輯運算時,非零實數(shù)看作true/1,零看作false/0),如果第一個operand為false,則不需執(zhí)行第二個operand,可以減小程序運行時間;邏輯或運算(|和|)區(qū)別同邏輯與運算;邏輯運算符也可以用來比較實數(shù)matlab實數(shù)進行邏輯運算時,非零實數(shù)看作t
30、rue/1,零看作false/0;邏輯運算不支持復(fù)數(shù)或虛數(shù)運算的優(yōu)先級邏輯運算的優(yōu)先級比較低的,見表格。還是用parentheses比較好啊a) 邏輯函數(shù)isnan ischar isempty isinf isnumeric logical1.3.4 分支語句if結(jié)構(gòu) switch結(jié)構(gòu) try/catch結(jié)構(gòu)1.3.4.1 if結(jié)構(gòu)1.3.4.2 if結(jié)構(gòu)舉例1.3.4.3 使用if結(jié)構(gòu)的注意點如果有許多mutually exclusive options,使用if+elseif結(jié)構(gòu)優(yōu)于nested(嵌套)if construct。1.3.4.4 switch結(jié)構(gòu)結(jié)構(gòu)switchcase c
31、ase_exp1,case_exp2,case_exp3 otherwise(這是可選的)end1.3.4.5 try/catch結(jié)構(gòu)1.3.5 plot函數(shù)upgradea) 坐標(biāo)軸的控制axisb) 使用hold on命令在同一窗口畫圖c) 創(chuàng)建多個畫圖窗口。使用figure(n)或者鼠標(biāo)來激活當(dāng)前工作窗口。使用gcf來返回當(dāng)前窗口的編號d) 子圖像subplote) 畫線的增強控制除了1.2.11的線的顏色,線的符號,線的形式設(shè)置之外:LineWidth:線寬MarkerEdgeColor:線符號的邊緣顏色MarkerFaceColor:線符號的填充顏色MarkerSize:線符號的大小
32、f) 文本字符串(text)的增強控制除了1.2.11的title,axis lables之外:可以設(shè)置加粗,斜體,字體,字體大小等,輸入GREEK letter,數(shù)學(xué)符號,和其他轉(zhuǎn)義字符(escape sequence)g) 極坐標(biāo)圖像(polar)polar(theta,r)h) 使用matlab注釋工具annotation和保存圖像matlab可以使用工具欄的和改變線的顏色,粗細(xì),線型,線的標(biāo)記符號和添加箭頭文本等等。也可以使用quiver/quiver3添加箭頭。注:quiver是用來畫特定點的速度矢量圖也可以使用text(x,y,leftarrow或者uparrow)等添加箭頭。1.
33、3.6 調(diào)試程序方法upgrade1.4 循環(huán)(for和while)1.4.1 while1.4.2 for1.4.3 邏輯數(shù)組和向量化1.4.4 Matlab Profile效能評測器1.4.5 附加例子1.5 用戶自定義函數(shù)1.5.1 matlab函數(shù)介紹1.5.2 matlab變量傳遞機制:pass-by-value scheme1.5.3 選擇性參數(shù)nargin這個函數(shù)返回調(diào)用這個函數(shù)時所需要的實際輸入?yún)?shù)的個數(shù)nargout這個函數(shù)返回調(diào)用這個函數(shù)時所需要的實際輸出參數(shù)的個數(shù)nargchk如要一個函數(shù)調(diào)用被調(diào)用時參數(shù)過多或過少,那么nargchk 函數(shù)將返回一個標(biāo)準(zhǔn)錯誤信息error
34、顯示錯誤信息,并中止函數(shù)以免它產(chǎn)生這個錯誤。如果參數(shù)錯誤是致命的,這個函數(shù)將會被調(diào)用。warning顯示警告信息并繼續(xù)執(zhí)行函數(shù),如果參數(shù)錯誤不是致命的,執(zhí)行還能繼續(xù),則這個將會被調(diào)用。inputname這個函數(shù)將會返回對于特定參數(shù)個數(shù)的實際變量名。1.5.4 使用全局變量共享數(shù)據(jù)global注意:rand和randn1.5.5 使用Persistent memory保存自定義函數(shù)變量1.5.6 函數(shù)的函數(shù)1.5.7 子函數(shù),私有函數(shù)和內(nèi)嵌函數(shù)1.5.7.1 子函數(shù)(Subfunction)1.5.7.2 私有函數(shù)(Private function)1.5.7.3 內(nèi)嵌函數(shù)(Nested fun
35、ction)Matlab7.0及之后的版本中,用到內(nèi)嵌函數(shù)時一定要與end配對使用1.6 附加數(shù)據(jù)類型和畫圖命令1.6.1 復(fù)數(shù)數(shù)據(jù)1.6.1.1 復(fù)數(shù)變量的表示1.6.1.2 對復(fù)數(shù)進行關(guān)系運算操作1.6.1.3 支持復(fù)數(shù)運算的函數(shù)a) 數(shù)據(jù)類型的轉(zhuǎn)換。可以將復(fù)數(shù)去除虛部,實部存為doubleb) 絕對值函數(shù)(abs)和相位函數(shù)(angle)1.6.1.4 對復(fù)數(shù)數(shù)據(jù)進行畫圖a) 實部和虛部分別畫圖b) 幅值和相位分別畫圖1.6.2 字符串函數(shù)1.6.2.1 字符串轉(zhuǎn)化函數(shù)(char和double)1.6.2.2 二維字符串?dāng)?shù)組的創(chuàng)建(char)1.6.2.3 字符串的連接(strcat和s
36、trvcat)1.6.2.4 字符串的比較a) 比較兩個字符串,看是否相等(strcmp、strcmpi、strncmp、strncmpi)b) 判斷單個字符是否相等(用關(guān)系運算符=、=、>等等)c) 判斷單個字符是不是字符,是大寫還是小寫,是不是數(shù)字等等(isletter、isspace、isstrprop)1.6.2.5 在一個字符串中查找/替換字符findstr、strmatch、strrep、strtok 1.6.2.6 字符串的大小寫轉(zhuǎn)換(upper和lower)1.6.2.7 刪除字符串中的whitespace使用strtrim注意:deblank刪除的是字符串后面的空格st
37、rtrim刪除的是字符串前面和后面的空格whitespace包括:“any character that separates tokens in MATLAB: a space,a tab, a linefeed, carriage return, etc.”1.6.2.8 數(shù)字轉(zhuǎn)換為字符串int2str、num2str、mat2str、sprintf等,還包括各種數(shù)據(jù)的轉(zhuǎn)換如dec2hex,dec2bin等1.6.2.9 字符串轉(zhuǎn)換為數(shù)字eval,str2double和sscanf.1.6.3 多維數(shù)組創(chuàng)建和調(diào)用1.6.4 附加復(fù)數(shù)類型(單精度single和整數(shù)integer)雖然他們可以節(jié)
38、省存儲空間,但是一般不用。但是matlab是在7.0版本之后才開始支持這種數(shù)據(jù)的,并且很不完善,所以除了特別用途,如圖像處理,一般不用這種類型的數(shù)據(jù)。1.6.5 附加二維畫圖命令a) stem plot(針頭圖),stair plot(階梯圖),bar plot(條形圖),pie plot(餅圖)和compass plot(羅盤圖)其中餅圖還可以通過pie(data,explode)指定某塊略微獨立于整個餅圖b) 函數(shù)畫圖利用ezplot和fplot就可以只用函數(shù)就能畫圖。一般用fplot,更豐富。c) 柱狀圖(hist)柱狀圖是用來顯示一系列數(shù)值的分布。1.6.6 三維畫圖a) plot3:
39、用于兩個應(yīng)變量,一個自變量b) surface、mesh、contour:用于一個應(yīng)變量,兩個自變量1.7 稀疏矩陣,元胞數(shù)組,結(jié)構(gòu),函數(shù)句柄1.7.1 稀疏矩陣稀疏矩陣的特性稀疏矩陣的產(chǎn)生稀疏矩陣的操作1.7.2 元胞數(shù)組cell1.7.2.1 創(chuàng)建元胞數(shù)組a) 使用賦值語句b) 使用cell函數(shù)進行預(yù)分配1.7.2.2 使用大括號直接創(chuàng)建元胞結(jié)構(gòu)1.7.2.3 查看元胞數(shù)組變量celldisp顯示數(shù)據(jù)cellplot圖形顯示1.7.2.4 擴展元胞數(shù)組預(yù)分配元胞數(shù)組的大小可以節(jié)省運算時間1.7.2.5 刪除元胞數(shù)組的元素1.7.2.6 使用元胞數(shù)組的數(shù)據(jù)1.7.2.7 字符串元胞數(shù)組cel
40、lstr可以把二維字符串?dāng)?shù)組變?yōu)樽址麛?shù)組char可以把字符串元胞數(shù)組變?yōu)槎S字符串?dāng)?shù)組1.7.2.8 元胞數(shù)組的重要性varargin和varargout的應(yīng)用varargin將輸入?yún)?shù)保存為cellvarargout將輸出參數(shù)保存為cell1.7.3 結(jié)構(gòu)數(shù)組結(jié)構(gòu)數(shù)組里每一個元素都有自己的名字,而不是用下標(biāo)來表示。這個元素成為field(域)從大到小分別為structureunitfield1.7.3.1 結(jié)構(gòu)數(shù)組的創(chuàng)建a) 使用賦值語句b) 使用struct函數(shù)進行預(yù)分配1.7.3.2 在結(jié)構(gòu)數(shù)組中添加field使用賦值語句1.7.3.3 從結(jié)構(gòu)數(shù)組中刪除field使用rmfield
41、1.7.3.4 結(jié)構(gòu)數(shù)組中數(shù)據(jù)的調(diào)用1.7.3.5 getfield和setfield函數(shù)使用getfield和setfield函數(shù)來獲取和設(shè)置結(jié)構(gòu)數(shù)組中的field1.7.3.6 動態(tài)field名1.7.3.7 對結(jié)構(gòu)數(shù)組使用size函數(shù)1.7.3.8 內(nèi)嵌結(jié)構(gòu)數(shù)組1.7.4 函數(shù)句柄1.7.4.1 函數(shù)句柄的創(chuàng)建和使用使用使用str2func函數(shù)句柄的畫圖plotfunc1.7.4.2 函數(shù)句柄的重要性1.7.4.3 函數(shù)句柄和內(nèi)嵌函數(shù)1.7.4.4 舉例:常微分方程求解1.8 輸入輸出函數(shù)1.8.1 textread函數(shù)textread可以用來讀取dat、txt等ASCII files文
42、件中所需要的不同類型的數(shù)據(jù)(load只可以讀取一種類型的數(shù)據(jù))。注意:好像textread不能用來讀取xls文件1.8.2 更多關(guān)于save和load進一步說明a) save filename content options:保存workspace中的所有變量或者選擇變量。b) whos -file test_matfile.mat:在不load文件mat前,查看mat文件中的變量。c) load filename options content:把mat文件中所有或者部分變量導(dǎo)入到workspace中。一般如果都在matlab環(huán)境里使用數(shù)據(jù),保存為mat格式就行了,這樣包含了所有的信息,其他
43、的格式多少會丟失一部分?jǐn)?shù)據(jù)。變量的存儲有很多格式,詳細(xì)要查看options的設(shè)置。1.8.3 Matlab文件過程簡介Matlab的文件讀取機制叫做文件標(biāo)識file id。1.8.4 文件的打開和關(guān)閉(fopen和fclose)text文件要加tbinary文件要加b1.8.5 二進制I/O函數(shù)(fwrite和fread)fwrite是按列寫入的?fread讀取的時候要設(shè)定幾行幾列,否則默認(rèn)的是按列讀取的1.8.6 格式化I/O函數(shù)(fprintf和fscanf)1.8.6.1 fprintf函數(shù)1.8.6.2 格式指定轉(zhuǎn)換符的理解%d %f %c等等之類。1.8.6.3 格式字符串的使用從左
44、至右,字符串格式與輸出變量一一對應(yīng)。1.8.6.4 sprintf函數(shù)與fprintf函數(shù)類似,但是sprintf函數(shù)用于將指定格式的數(shù)據(jù)按照字符串輸出至Matlab指定的變量,不在command window中顯示。1.8.6.5 fscanf函數(shù)fscanf讀取的時候要除了要設(shè)定字符串格式,還要設(shè)定幾行幾列,否則默認(rèn)的是按列或行讀取的,各種情況不一樣,傻傻分不清1.8.6.6 fgetl函數(shù)沒用過1.8.6.7 fgets函數(shù)沒用過1.8.7 格式化和二進制I/O函數(shù)的比較格式化文件無格式化文件(Binary)1.8.8 文件位置和狀態(tài)函數(shù)exist函數(shù)(好像在這一系列中最有用):判斷一個
45、文件或變量等是否已經(jīng)存在以確定是否覆蓋ferror函數(shù):顯示對應(yīng)的fid指針的文件的錯誤信息feof函數(shù):判斷對應(yīng)的fid指針對應(yīng)的文件是否為最后一個文件ftell函數(shù):顯示當(dāng)前文件的位置frewind函數(shù):把fid對應(yīng)的文件的fid指針排列到最前面fseek函數(shù):可以任意設(shè)置文件的位置fid問:文件指針和fid是一個東西嗎?1.8.9 textscan函數(shù)與textread函數(shù)類似,但是更加強大,可以規(guī)定每一列的格式,只有一個返回量,元胞數(shù)組cell。excel也是可以的。textscan可以讀取任意file fid的文件,而fid可以用fseek改變。1.8.10 uiimport函數(shù)GU
46、I界面的數(shù)據(jù)導(dǎo)入,不用自己編寫啦1.8.11 總結(jié)回顧:第八章主要介紹了文件I/O操作,以便在matlab環(huán)境或者matlab環(huán)境之外的數(shù)據(jù)共享。a) textread和textscan函數(shù):都是為了從用其它語言或者表格里讀取ASCII數(shù)據(jù),textscan比textread運行更快,更靈活,所以textscan首選。b) load和save調(diào)用和存取的mat文件保存變量的信息最多,可移植性最強,所以一般不需要與matlab之外環(huán)境進行數(shù)據(jù)交換時,數(shù)據(jù)I/O以load和save為首選。c) Matlab有兩種I/O命令:二進制和格式化。各有優(yōu)劣。d) 文件的打開和關(guān)閉用fopen和fclose
47、函數(shù);二進制文件的讀取用fwrite和fread函數(shù);格式化文件的讀取用fprinf和fscanf函數(shù);將文件讀取為字符串用fgetl和fgets函數(shù)。e) exist,ferror,feof,ftell,frewind,fseek函數(shù)。1.8.11.1 好的編程習(xí)慣總結(jié)a) 除非我們必須與非MATLAB 程序進行數(shù)據(jù)交換,存儲和加載文件時,都應(yīng)用mat 文件格式。這種格式是高效的且移植性強,它保存了所有MATLAB 數(shù)據(jù)類型的細(xì)節(jié)。b) 在使用fopen語句時,一定要注意指定合適的權(quán)限,這取決于你是要讀取數(shù)據(jù),還是要寫入數(shù)據(jù)。好的編程習(xí)慣可以幫助你避免(類似于覆蓋的)錯誤。c) 在文件打開操
48、作后檢查它的狀態(tài)以確保它被成功打開。如果文件打開失敗,提示用戶解決方法。d) 對于那些必須進行人工檢查的數(shù)據(jù),或?qū)τ谀切┍仨氃诓煌挠嬎銠C上運行的數(shù)據(jù),用格式化文件創(chuàng)建數(shù)據(jù)。對于那些不需要進行人工檢查的數(shù)據(jù)且在相同類型的計算機創(chuàng)建并運行的數(shù)據(jù),用無格式文件創(chuàng)建數(shù)據(jù),當(dāng)I/O 速度緩慢時,用格式化文件創(chuàng)建數(shù)組。e) 未經(jīng)用戶同意,不要用新數(shù)據(jù)覆蓋原用的文件。1.8.11.2 第八章的5個Examplea) Example.1讀取二進制數(shù)據(jù)(Writing and Reading Binary Data)b) Example.2產(chǎn)生信息表格(Generating Table of Informat
49、ion)c) Example.3格式化和二進制I/O的比較(Comparing Formatted and Binary I/O)d) Example.4打開一個輸出文件(Opening an Output File)e) Example.5用一組帶有噪聲的測量值擬合一條直線(Fitting a Line to a Set of Noisy Measurements)1.9 圖形句柄(只使用axes,line,text等不需人機交互的屬性)句柄圖形(Handle graphics)是用來控制matlab圖形對象(Graphics Object)屬性的底層圖形函數(shù)的集合。它們可以:a) 方便程序
50、員靈活控制已創(chuàng)建的plots和graphs;b) 為程序創(chuàng)建圖形用戶界面(GUI)。1.9.1 Matlab圖形系統(tǒng)Matlab是以圖形對象的等級系統(tǒng)(hierarchical system of graphics objects)為基礎(chǔ),每一個圖形對象都有一個唯一的編號,叫handle。每一個圖形對象(包括line,figure,axes,text string等)都有自己的屬性。所有的圖形對象都是按照父對象和子對象的等級系統(tǒng)組織起來的。子對象可以繼承父對象的大多數(shù)屬性。Matlab的最高層圖形對象叫做root,可以看作電腦的整個屏幕,root的handle是0,root可以用來控制屏幕?(
51、不懂)root下面有很多的figures,每個figure都有balabalabala等圖形對象。在第八章里,只講述figure里部分不需要交互的屬性,如line,axes等。1.9.2 對象句柄對象的句柄可以通過(一般情況下為了便于區(qū)分,句柄都以h開頭):handle=figure;(生成figure并將句柄賦值給handle)handle=gcf;(獲取當(dāng)前figure句柄)handle=gca;(獲取當(dāng)前axes句柄)handle=gco;(獲取當(dāng)前object句柄)1.9.3 對象屬性的檢測與修改每個對象都有很多屬性,每個屬性都有屬性名和相應(yīng)的屬性值。屬性名是字符串,屬性值可以是數(shù)值,
52、也可以是字符串。在這里,屬性名是不區(qū)分大小寫的。1.9.3.1 在創(chuàng)建對象時改變對象屬性(對象創(chuàng)建函數(shù)包括:figure,axes,line和plot)配對使用(屬性名,屬性值)1.9.3.2 在創(chuàng)建對象后利用語句statement改變對象屬性使用get,set函數(shù)1.9.3.3 在創(chuàng)建對象后利用GUI屬性編輯器(property editor)改變對象屬性a) 利用figure上的b) 在command window里鍵入propedit(HandleList);c) 在command window里鍵入propedit;1.9.4 使用set函數(shù)列出所有可能的屬性xxx=set(hndl)
53、返回當(dāng)前對象的所有屬性,并以結(jié)構(gòu)數(shù)組的形式存入xxx;xxx=set(hndl,LineStyle)返回當(dāng)前對象的LineStyle屬性,存入xxx;1.9.5 用戶自定義數(shù)據(jù)創(chuàng)建對象的自定義屬性setappdata()getappdata()isappdata()rmappdata()1.9.6 查找對象a) 對于已經(jīng)創(chuàng)建并且知道handle的對象,可以使用get和set來改變對象屬性;b) 對于已經(jīng)創(chuàng)建但是由于某種原因未知handle的對象,可以利用gcf,gca,gco和findobj來重新獲取handle。(注意:使用findobj時,都是從root開始從上往下搜索,所以很費時。要限制
54、搜索范圍噠)1.9.7 用鼠標(biāo)選擇對象Matlab根據(jù)stacking order選擇對象本節(jié)重要的函數(shù)waitforbuttonpress1.9.8 位置和單位1.9.8.1 figure對象的位置利用left bottom width height向量,分別是相對于計算機屏幕左下角的。注意Units的單位是inches | centimeters | normalized | points | pixels | characters 中的哪一個,建議使用normalized(歸一化值)1.9.8.2 axes和uicontrol對象的位置使用同figure的位置,但是axes和uicont
55、rol是相對于他們所在figure的左下角的。同樣要注意單位。1.9.8.3 text對象的位置text對象的位置是由x y或者x y z確定的,text對象是相對于相應(yīng)的axes的坐標(biāo)原點的。同樣要注意單位(用的是坐標(biāo)軸的單位)。1.9.9 打印設(shè)置設(shè)置紙張,單位之類的。1.9.10 Default和Factory屬性可以用用來操作父對象的屬性,使得他的子對象都有相似的屬性,這是為了方便使用來的屬性,暫時應(yīng)該用不到。1.9.11 圖形對象屬性本書無法羅列,利用matlab的help查看更多圖形對象和相關(guān)屬性。1.9.12 總結(jié)axes;figure;findobj;gca;gcf;gco;get;getappdata;isappdata;rmappdata;set;setappdata;wai
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 明確責(zé)任的工作目標(biāo)設(shè)定計劃
- 如何提升財務(wù)團隊的協(xié)作效率計劃
- 2025年鞋用乳液膠粘劑項目合作計劃書
- 2025年醫(yī)用冷療項目發(fā)展計劃
- 2025年其它核材料及相關(guān)特殊材料合作協(xié)議書
- 遠(yuǎn)程在線教育平臺學(xué)習(xí)免責(zé)協(xié)議
- 電動汽車充電樁安裝施工合同
- Rac-Ganoderic-acid-C2-生命科學(xué)試劑-MCE
- 財務(wù)顧問聘用協(xié)議
- 工作總結(jié)寫作培訓(xùn)
- 大學(xué)生家長陪讀承諾書
- 安全生產(chǎn)事故調(diào)查與案例分析(第3版)課件 呂淑然 第5章 事故案例評析
- 學(xué)生綜合素質(zhì)評定與職業(yè)規(guī)劃的關(guān)聯(lián)性分析
- 2025云南省貴金屬新材料控股集團限公司面向高校畢業(yè)生專項招聘144人高頻重點提升(共500題)附帶答案詳解
- 香港及內(nèi)地傳真號碼
- 湖北中煙工業(yè)限責(zé)任公司2025年招聘(技術(shù)類和業(yè)務(wù)類崗位)【43人】高頻重點提升(共500題)附帶答案詳解
- 2024-2025學(xué)年成都市成華區(qū)七年級上英語期末考試題(含答案)
- 2025年山西杏花村汾酒集團限責(zé)任公司人才招聘71名高頻重點提升(共500題)附帶答案詳解
- 石家莊市長安區(qū)學(xué)年三年級數(shù)學(xué)第一學(xué)期期末檢測試題含解析
- 2025年中國一汽招聘筆試參考題庫含答案解析
- 特殊家長課后溝通技巧培訓(xùn)
評論
0/150
提交評論