Filter löschen
Filter löschen

function for cell array

1 Ansicht (letzte 30 Tage)
Oskar Kilgus
Oskar Kilgus am 28 Jul. 2022
Bearbeitet: Jon am 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!

Akzeptierte Antwort

Jon
Jon am 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
  3 Kommentare
Oskar Kilgus
Oskar Kilgus am 2 Aug. 2022
Thanks for the initial help Jon,
i guess the problem i´m dealing with is more about the function itself.
I´ve got a cell array with wave-data in every cell and want to apply the pitch function to it.
As mentioned above im struggling with the input for pitch. Lets take ur 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}
The idea is now to do the following:
f0_A = cellfun(pitch(???),A)
I cant figure out how to tell the pitch function what the right input arguments are..
Thanks in advance!
Jon
Jon am 2 Aug. 2022
Bearbeitet: Jon am 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)

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by