What does @m and m(:) signify here?
36 views (last 30 days)
Show older comments
cell2mat(cellfun(@(m)m(:),a,'uni',0))
0 Comments
Answers (2)
Star Strider
on 27 Oct 2021
Correctly stated ‘@(m)’ is a function handle (see What is a Function Handle? for details) and the ‘m(:)’ forces the argument ‘m’ to be a column vector (see MATLAB Operators and Special Characters for those details), and since ‘m’ is obviously a cell array (that can contain anything, however here appears to be numeric) —
a = {randi(9, 1, 5)} % Cell Row Vector
out = cell2mat(cellfun(@(m)m(:),a,'uni',0)) % Array Column Vector Result
Experiment to get diferent results.
.
1 Comment
Jaya
on 27 Oct 2021
Ah yes, function handle! I just forgot the word and was trying to explain in my own terms.
Jaya
on 27 Oct 2021
Edited: Jaya
on 27 Oct 2021
From what I know, @(m) specifies a function that which will be defined in terms of m. And what the function does i.e. the function description is m(:). The a is the data structure (whatever type it is) on which the the function will perform its action, m(:).
Using the above description you can take a look at the example below (from mathworks website) and make an analogy . Here the task is to extract first three characters from the str elements. Hope this helps!
str = ["Saturday","Sunday"]
B = cellfun(@(x) x(1:3),str,'UniformOutput',false)
0 Comments
See Also
Categories
Find more on Cell Arrays in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!