# function for cell array

1 view (last 30 days)
Oskar Kilgus on 28 Jul 2022
Edited: Jon on 2 Aug 2022
Hi folks,
i´ve got a cell array with vectors of data type double in every cell. Now i want to apply a function to every single cell. I found the command cellfun(func,A) to be useful.
Nonetheless i dont know how to implement a function func to do what i want on every part of the cell array. In particular i dont get how to tell the function that the vectors of doubles in the cells of A are the input arguments.
I´m thankful for any advice!

Jon on 28 Jul 2022
Here's a simple example
% Make an example cell array with a vector in each cell
A = cell(2,3); % preallocate
for i = 1:2
for j = 1:3
A{i,j} = rand(4,1);
end
end
A
A = 2×3 cell array
{4×1 double} {4×1 double} {4×1 double} {4×1 double} {4×1 double} {4×1 double}
% Now use cellfun to compute the sum of the elements in each vector
B = cellfun(@(x) sum(x),A)
B = 2×3
1.8600 1.9744 2.3527 2.2433 2.3225 2.4160
Jon on 2 Aug 2022
Edited: Jon on 2 Aug 2022
I am not familiar with the "pitch" function, and it does not seem to be in my MATLAB R2022A, or any of my toolboxes. Maybe you have the Audio Toolbox? I see looking online that there is a pitch function in that toolbox https://www.mathworks.com/help/audio/ref/pitch.html#mw_cb9b23c6-9dfa-4f98-8596-743e701e5fb8. Assuming this is the function you are using and you have already defined the variable fs in your workspace, you could do something like:
f0_A = cellfun(@(x) pitch(x,fs),A)