Matlab:Matlab中常用的函数、案例详细攻略
Matlab:Matlab中常用的函數(shù)、案例詳細(xì)攻略
?
?
?
目錄
常用函數(shù)
1、與文件相關(guān)
2、MATLAB GUI不同控件函數(shù)間變量傳遞方法
?
?
?
?
?
常用函數(shù)
Matlab中的bwmorph函數(shù)解釋 bwmorph:對二值圖像的形態(tài)學(xué)操作。 BW2 = bwmorph(BW,operation) BW2 =bwmorph(BW,operation,n) BW2 = bwmorph(BW,operation)對二值圖像應(yīng)用形態(tài)學(xué)操作。 BW2 = bwmorph(BW,operation,n)應(yīng)用形態(tài)學(xué)操作n次,n可以是Inf,這種情況下該操作被重復(fù)執(zhí)行直到圖像不再發(fā)生變化為止。Operation是以下的字符串: Operation Description 'bothat'是形態(tài)學(xué)上的“底帽”變換操作,返回的圖像是原圖減去形態(tài)學(xué)閉操作處理后的圖像(閉操作:先膨脹再腐蝕) 'bridge'連接斷開的像素。也就是將0值像素置1如果他有兩個(gè)非零的不相連(8鄰域)的像素,比如: 1 0 0 1 1 0 1 0 1 經(jīng)過bridge連接后變?yōu)? 1 1 1 0 0 1 0 1 1 'clean' 移除孤立的像素(被0包圍的1)。比如下面這個(gè)模型的中心像素:0 0 00 1 00 0 0 'close'執(zhí)行形態(tài)學(xué)閉操作(先膨脹后腐蝕) 'diag' 利用對角線填充來消除背景中的8連通區(qū)域。比如: 0 1 0 1 1 0 1 0 0 經(jīng)過diag變成 1 1 0 0 0 0 0 0 0 'dilate'利用結(jié)構(gòu)ones(3)執(zhí)行膨脹操作。 'erode'利用結(jié)構(gòu)ones(3)執(zhí)行腐蝕操作。 'fill' 填充孤立的內(nèi)部像素(被1包圍的0),比如下面模型的中心像素:1 1 11 0 11 1 1 'hbreak'移除H連通的像素,例如: 1 1 1 1 1 1 0 1 0 變成 0 0 0 1 1 1 1 1 1 'majority'將某一像素置1如果該像素的3×3鄰域中至少有5個(gè)像素為1;否則將該像素置0 'open'執(zhí)行形態(tài)學(xué)開操作(先腐蝕后膨脹) 'remove'移除內(nèi)部像素。該選項(xiàng)將一像素置0如果該像素的4連通鄰域都為1,僅留下邊緣像素。 'shrink'n = Inf時(shí),將目標(biāo)縮成一個(gè)點(diǎn)。沒有孔洞的目標(biāo)縮成一個(gè)點(diǎn),有孔洞的目標(biāo)縮成一個(gè)連通環(huán)。 'skel'n = Inf時(shí),移除目標(biāo)邊界像素,但是不允許目標(biāo)分隔開,保留下來的像素組合成圖像的骨架。 'spur'移除刺激(孤立)像素。比如: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 變成 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 1 1 0 0 'thicken'n = Inf時(shí),通過在目標(biāo)外部增加像素加厚目標(biāo)直到這樣做最終使先前未連接目標(biāo)成為8連通域。 'thin'n = Inf時(shí),減薄目標(biāo)成線。沒有孔洞的目標(biāo)縮成最低限度的連通邊;有孔洞的目標(biāo)縮成連通環(huán)。 'tophat'執(zhí)行形態(tài)學(xué)“頂帽”變換操作,返回的圖像是原圖減去形態(tài)學(xué)開操作處理之后的圖像(開操作:先腐蝕再膨脹)。 bw = bwareaopen(bw, threshold) %函數(shù)作用是刪除二值圖像BW中面積小于P的對象,默認(rèn)情況下conn使用8鄰域?
1、與文件相關(guān)
[FileName,PathName,FilterIndex] = uigetfile(FilterSpec,DialogTitle,DefaultName)%該函數(shù)是創(chuàng)建標(biāo)準(zhǔn)的對話框并通過交互式操作取得文件名 FileName:返回的文件名 PathName:返回的文件的路徑名 FilterIndex:選擇的文件類型 FilterSpec:文件類型設(shè)置 DialogTitle:打開對話框的標(biāo)題 DefaultName:默認(rèn)指向的文件名?
2、MATLAB GUI不同控件函數(shù)間變量傳遞方法
在GUI中一個(gè)控件函數(shù)結(jié)束后,會將在這個(gè)函數(shù)中使用的變量全部刪除,如果想在另一個(gè)控件中使用,則必須想辦法將這個(gè)變量保存?zhèn)鬟f,方法有以下幾種:
T1、使用globe定義全局變量
這種方法不是很好,一方面是要在使用變量的函數(shù)里面要先對變量進(jìn)行聲明,另一方面,在一個(gè)函數(shù)里面對變量進(jìn)行操作就會對所有函數(shù)起作用,這樣不是太方便,但畢竟是一種解決方法。
function btn1_callback(hObject,userdata,handles)
global var1
%對var1的處理
function btn2_callback(hObject,userdata,handles)
global var1
%對var1的引用
T2、使用guidata函數(shù)
使用方法是:
handles.X=str2double(get(hObject,'String'));
guidata(hObject,handles);
在別的函數(shù)中只要使用handles.X就可以得到str2double(get(hObject,'String'))數(shù)值。
這種方法的好處是,在改變了控件的Tag后,方便使用相應(yīng)控件傳遞來的數(shù)據(jù),缺點(diǎn)是要改變控件的句柄handles值,這樣似乎不是很安全。
T3、使用空間的userdata屬性保存數(shù)據(jù)
使用方法如下:
set(handles.X,'userdata',a);
這里a就是要傳遞的變量,現(xiàn)在暫時(shí)保存在這個(gè)控件的userdata中,需要取出時(shí):
a=get(handles.X,'userdata');
即可將a傳遞到新函數(shù)中,如果要傳遞的是多個(gè)變量,可以使用結(jié)構(gòu)數(shù)組進(jìn)行傳遞
這種方法是最安全且自由度高的傳遞犯法,推薦!!!
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的Matlab:Matlab中常用的函数、案例详细攻略的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Matlab:序列分析法MATLAB代码
- 下一篇: Matlab:成功解决引用了已清除的变量