Applying functions to each cell in a cell array

Good afternoon,
I have a 60 by 1 cell array that stores matrices of different sizes (all numeric). I want to perform certain functions (mean, diff, hypot, convhull...etc) on these matrices from the 1st element of the cell array, to the 60th element.
Is there a way I can do that?
Thank you.

3 commentaires

Benedict Low
Benedict Low le 4 Août 2017
Modifié(e) : Benedict Low le 4 Août 2017
Thank you all for your responses. So suppose I have the following array, consisting of x and y coordinates of various points
c1=[1,2; 3,4; 5,6]; % 3 x-coordinates and 3 y-coordinates
c2=[2,10; 4,8; 9,3; 10,2; 4,5]; % 5 x and y coordinates
c3=[3,8; 9,1; 7,10; 5,1]; % 4 x and y coordinates
C={c1; c2; c3};
is there a way I can calculate the area of the convhull for each cell of the array?
Jan
Jan le 4 Août 2017
Did you read the answers, which have been given already?
Benedict Low
Benedict Low le 6 Août 2017
Yes I did Jan. But ran into errors. Trying to fix them now.

Connectez-vous pour commenter.

 Réponse acceptée

Plus de réponses (2)

The function call "cellfun" is a useful function in this case. In the case of the function mean, the code below would work to get the mean of each subset within the cell array:
myCell = {[0 1 2]; [3 4 5]; [6 7 8]; [9 10 11]}
result = cellfun(@mean,myCell)
In this case, result would be an array of values [1 4 7 10]. I've linked the documentation to "cellfun" here.
Adam
Adam le 4 Août 2017

0 votes

If you have multiple functions to perform a for loop would likely be simplest. The idea that for loops are very slow in Matlab is often erroneous. I favour cellfun and arrayfun from an aesthetic perspective, but from a speed perspective for loops are usually faster. And certainly if you want to calculate multiple things then a single pass over the data in a for loop is a lot better than multiple calls to cellfun, though you could of course create a composite function that will calculate all your results on a single cell and then call this via cellfun if you prefer the cellfun approach.

Catégories

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by