胞元數組批量化操作函數cellfun 20170317

函數 cellfun

功能 對胞元數組中的每個元素進行相同的操作

格式 

[A1,A2,A3...Am] = cellfun(func,C1,...,Cn)

[A1,A2,A3...Am] = cellfun(func,C1,...,Cn,Name,Value)

備註

格式二中 Name,Value對中Name 可選爲‘UniformOutput’和‘ErrorHandler’

Uniformoutput

true 將輸出整合爲一個數組

C = {rand(3),rand(3),rand(3)};
fcn = @mean;
cellfun(fcn,C,'UniformOutput',true)

false 輸出爲胞元數組

C = {rand(3),rand(3),rand(3)};
fcn = @mean;
cellfun(fcn,C,'UniformOutput',false)


輸出中m對應於函數的操作,但每個輸出的維度與n相同

C = {rand(3),rand(3),rand(3)};

[nRows,nCols] = cellfun(@size,C)

cellfun(@size,C,'UniformOutput',false)


對字符串的統一操作

days = {'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'};

abbrev = cellfun(@(x) x(1:3), days, 'UniformOutput', false)

error handle

主函數

A = {rand(3)};
B = {rand(5)};
AgtB = cellfun(@(x,y) x > y, A, B, 'ErrorHandler', @errorfun, ...
               'UniformOutput', false)

錯誤處理函數

function result = errorfun(S, varargin)
   warning(S.identifier, S.message);
   result = 1;%NaN;
end


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章