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