欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

matlab對(duì)于返回句柄的應(yīng)用

matlab對(duì)于返回句柄的應(yīng)用?

1.函數(shù)句柄的創(chuàng)建

函數(shù)句柄(function handle)是MATLAB中的一類特殊的數(shù)據(jù)結(jié)構(gòu),它的地位類似于其它計(jì)算機(jī)語(yǔ)言里的函數(shù)對(duì)象(Javascript,Python),函數(shù)指針(C++),或者函數(shù)引用(Perl)。作用是將一個(gè)函數(shù)封裝成一個(gè)變量,使其能夠像其它變量一樣在程序的不同部分傳遞。

MATLAB中的函數(shù)句柄在調(diào)用時(shí)和普通函數(shù)沒(méi)有任何區(qū)別,下面展示幾種創(chuàng)建函數(shù)句柄的方式,最后通過(guò)函數(shù)句柄調(diào)用sin(pi)。

% 函數(shù)句柄的創(chuàng)建% 方式1 : 直接加@% 語(yǔ)法:@函數(shù)名fun1 = @sin;% 方式2 : str2func函數(shù)% 語(yǔ)法:str2fun('函數(shù)名')fun2 = str2func('cos');% 方式3 : 匿名函數(shù)% 語(yǔ)法:@(參數(shù)列表)單行表達(dá)式fun3 = @(x, y)x.^2 + y.^2; % 函數(shù)句柄的調(diào)用fun1(pi);

2.將函數(shù)句柄作為函數(shù)參數(shù)

函數(shù)對(duì)象的經(jīng)典應(yīng)用情境之一就是排序(Sorting),即為一列未知類型的數(shù)組提供自定義的排序規(guī)則。下面我將實(shí)現(xiàn)一個(gè)函數(shù)super_sort,接收兩個(gè)參數(shù),第一個(gè)參數(shù)為待排序的數(shù)組,第二個(gè)參數(shù)是一個(gè)對(duì)原始數(shù)據(jù)的變換函數(shù)。super_sort能夠?qū)υ紨?shù)據(jù)按照變換后的結(jié)果進(jìn)行排序,并返回排好序的原始數(shù)據(jù)。

%文件名:super_sort.mfunction sorted = super_sort(arr, fh)transformed = fh(arr);% 對(duì)原始數(shù)組進(jìn)行變換[~, index] = sort(transformed); % 獲得排序后的原數(shù)組位置索引sorted = arr(index); % 返回排序后的原數(shù)組end

測(cè)試腳本:

arr = round(randn(8, 1) * 10);super_sort(arr, @abs)

% 將arr按照其絕對(duì)值大小排序super_sort(arr, @sin)

% 將arr按照sin(x)的結(jié)果排序

注意,與Perl或Python不同,這里提供的函數(shù)句柄并不用于元素間的比較,而是用于將數(shù)組內(nèi)各個(gè)元素進(jìn)行映射成待比較的值。

3.利用函數(shù)句柄進(jìn)行畫圖

借助函數(shù)句柄,可以方便地畫出各類函數(shù)的圖像,這類繪圖函數(shù)往往以ez開頭,下面我將演示ezplot, ezsurf兩個(gè)函數(shù)。

% ezplot畫sin函數(shù)在[0, 2 * pi]內(nèi)的曲線ezplot(@sin, [0, 2 * pi]);

% ezplot利用x和y上的參數(shù)方程畫心形線xfun = @(t)3*(2*cos(t)-cos(2*t));yfun = @(t)3*(2*sin(t)-sin(2*t));ezplot(xfun, yfun);

% ezsurf畫二次曲面fun3 = @(x,y)x.^2+y.^2;ezsurf(fun3, [-2, 2, -2, 2]);

4.利用函數(shù)句柄進(jìn)行圖像的濾波

MATLAB提供了colfilt這一函數(shù),該函數(shù)能將圖像分成獨(dú)立的子塊(局部處理),或者相互交疊的窗口(可實(shí)現(xiàn)二維卷積及中值濾波),并利用傳入的函數(shù)句柄對(duì)各個(gè)子塊進(jìn)行處理。

函數(shù)原型為B = colfilt(A,[M N],BLOCK_TYPE,FUN),其中B是輸出圖像,A是輸入圖像,[M N]是圖像塊或窗口的長(zhǎng)寬,BLOCK_TYPE參數(shù)決定是進(jìn)行塊處理還是窗口滑動(dòng)處理,F(xiàn)UN就是處理用的函數(shù)句柄,它只接收一個(gè)矩陣參數(shù),這個(gè)矩陣的每一列都是拉長(zhǎng)為列向量的子圖像,F(xiàn)UN一次可能要處理多個(gè)子圖像。