matlab中find和sort的用法 matlab主函數例子?
matlab主函數例子?matlab是可以在m文件函數中定義方法一個函數和多個子函數,但是需要注意子函數不能由同一m文件中的函數調用。如下面的例子:function[obj,min]mypfun(x)
matlab主函數例子?
matlab是可以在m文件函數中定義方法一個函數和多個子函數,但是需要注意子函數不能由同一m文件中的函數調用。
如下面的例子:function[obj,min]mypfun(x)%主函數nlength(x);maxmysubfun1(x,n);minmysubfun2(x);functionrmysubfun1(x,n)%子函數1x1sort(x);rx1(n);functionrmysubfun2(x)%子函數2x1sort(x);rx1(1);
matlab對于返回句柄的應用?
1.函數句柄的創(chuàng)建角色
函數句柄(functionhandle)是MATLAB中的一類特殊的方法的數據結構,它的地位類似于其它計算機語言里的函數對象(Javascript,Python),函數指針(C),的或函數腳注(Perl)。作用是將一個函數封裝成一個變量,使其能夠像其它變量差不多在程序的不同部分傳遞。
MATLAB中的函數句柄在內部函數時和特殊函數沒有任何區(qū)別,下面展示幾種創(chuàng)建戰(zhàn)隊函數窗口對象的,到最后是從函數句柄動態(tài)創(chuàng)建sin(pi)。
%函數句柄的修改%:然后加@%語法:@函數名;%:str2func函數%語法:str2fun(函數名)fun2str2func(cos);%:匿名函數%語法:@(參數列表)單行表達式run3@(x,y)x.^2y.^2;%函數句柄的全局函數life1(pi);
2.將函數句柄才是函數參數
函數對象的超經典應用情境之一是順序(Sorting),即為一列未知地類型的數組需要提供可以自定義的排序規(guī)則。下面我將實現(xiàn)一個函數ultra_sort,收不到兩個參數,另一個參數為待排序的數組,第二個參數是一個對原始數據的變化函數。super_sort能對原始數據遵循變換后的結果參與排序,并趕往排好序的原始數據。
%文件名:junior_sortedultra_sort(arr,fh)transformedfh(arr);%對各種數組通過變化[~,index]sort(transformed);%完成任務排序后的原數組位置索引sortedarr(index);%前往排序后的原數組end
測試腳本:
arrround(randn(8,1)*10);infinity_sort(arr,@abs)
%將arr遵循其絕對值大小排序super_sort(arr,@sin)
%將arr遵循sin(x)的結果排序
特別注意,與Perl或Python不同,這里提供的函數句柄并不主要用于元素間的比較比較,而是作用于將數組內各個元素進行映射出成待比較的值。
3.依靠函數句柄進行作圖
自身函數句柄,這個可以更方便地畫出各形函數的圖像,這類繪圖函數一般說來以ez開頭,下面我將演示ezplot,ezsurf兩個函數。
%ezplot畫sin函數在[0,2*pi]內的曲線ezplot(@sin,[0,2*pi]);
%ezplot用來x和y上的參數方程畫心形線xfun@(t)3*(2*cos(t)-cos(2*t));yfun@(t)3*(2*sin(t)-sin(2*t));ezplot(xfun,yfun);
%ezsurf畫后的曲面enjoy3@(x,y)x.^2y.^2;ezsurf(enjoy3,[-2,2,-2,2]);
4.借用函數句柄進行圖像的濾波
MATLAB提供給了colfilt這一函數,該函數能將圖像四等分相當于的子塊(局部處理),的或彼此間交疊的窗口(可基于二維卷積及中值濾波),并用來傳來的函數句柄對各個子塊通過處理。
函數原型為Bcolfilt(A,[MN],BLOCK_TYPE,new),其中B是作為輸出圖像,A是輸入輸入圖像,[MN]是圖像塊或窗口的長寬,BLOCK_TYPE參數決定是接受塊處理應該窗口上下移動去處理,run那就是處理是用函數句柄,它只收不到一個矩陣參數,這個矩陣的每一列都是抬高為列向量的子圖像,life兩次可能會要一次性處理多個子圖像。