What does @m and m(:) signify here?

11 vues (au cours des 30 derniers jours)
Siddharth Behal
Siddharth Behal le 27 Oct 2021
Commenté : Jaya le 27 Oct 2021
cell2mat(cellfun(@(m)m(:),a,'uni',0))

Réponses (2)

Star Strider
Star Strider le 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
a = 1×1 cell array
{[2 4 3 7 7]}
out = cell2mat(cellfun(@(m)m(:),a,'uni',0)) % Array Column Vector Result
out = 5×1
2 4 3 7 7
Experiment to get diferent results.
.
  1 commentaire
Jaya
Jaya le 27 Oct 2021
Ah yes, function handle! I just forgot the word and was trying to explain in my own terms.

Connectez-vous pour commenter.


Jaya
Jaya le 27 Oct 2021
Modifié(e) : Jaya le 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"]
str = 1×2 string array
"Saturday" "Sunday"
B = cellfun(@(x) x(1:3),str,'UniformOutput',false)
B = 1×2 cell array
{'Sat'} {'Sun'}

Catégories

En savoir plus sur Structures dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by