What does @m and m(:) signify here?
    9 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 Structures 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!