Matlab中cellfun函数的使用
Compute the mean of each vector in cell array C. C = {1:10, [2; 4; 6], []}; averages = cellfun(@mean, C) This code returns averages = 5.5000 4.0000 NaN
…………………………………………………….
该函数就是专门对cell数组进行操作的,个人认为是代替了传统的for循环,和C语言不一个思想,主要是行列化矩阵,一次处理。
比如a = {[1 2 3] [4 5 6]},那么cellfun(@length,a)得到6。线cell2mat也可以吧,然后分别计算,在累加。
Compute the size of each array in C, created in the previous example. [nrows, ncols] = cellfun(@size, C) This code returns nrows = 1 3 0 ncols = 10 1 0
………………………………………………….
cellfun中使用自定义函数对cell数组进行处理;既然可以自定义函数,那么cellfun中的的中间部分的参数个数和自定义函数需要的参数数目相同。
还能这么用。
queryNearestNeighborIds = cellfun( @(vector, index) vector(index), queryCandidateIds, queryNearestNeighborIds, \'UniformOutput\', false );
…………………………………………
Create a cell array that contains strings, and abbreviate those strings to the first three characters. Because the output strings are nonscalar, set UniformOutput to false. days = {\'Monday\', \'Tuesday\', \'Wednesday\', \'Thursday\', \'Friday\'}; abbrev = cellfun(@(x) x(1:3), days, \'UniformOutput\', false) The syntax @(x) creates an anonymous function. This code returns abbrev = \'Mon\' \'Tue\' \'Wed\' \'Thu\' \'Fri\'