Warum wird dieses Funktionshandle im falschen Kontext verwendet?

Ich versuche zu verstehen, wie ich Funktionen an @ weitergevarfun, das gilt wohl fürarrayfun, cellfun etc

eim Lesen der Hilfedatei sollte das erste Argument lauten:

Function, angegeben als Funktionshandle. Sie können die Funktion in einer Datei oder als anonyme Funktion definieren. Wenn func mehreren Funktionsdateien entspricht (d. H., Wenn func eine Reihe überladener Funktionen darstellt), bestimmt MATLAB die aufzurufende Funktion anhand der Klasse der Eingabeargumente.

So versuche ich es mit folgenden Daten:

sampleId = [1 1 1 3 3 3]';
entity = [1 2 3 1 4 5]';
dataTable = table(sampleId, entity)

Und ja

varfun(@mean, dataTable)

ans = 

    mean_sampleId    mean_entity
    _____________    ___________

    2                2.6667     

Jetzt tritt mein Problem auf, wenn ich meine eigene Funktion anonym definiere, zum Beispiel:

mymean = @(x){sum(x)/length(x)};

Dann wird ein Fehler geworfen:

varfun(@mymean, dataTable)
Error: "mymean" was previously used as a variable, conflicting with its use here as the name of a function or command.
See "How MATLAB Recognizes Command Syntax" in the MATLAB documentation for details.

Noch, wenn ich das at-Symbol nicht benutze, erhalte ich:

varfun(mymean, dataTable)

ans = 

    Fun_sampleId    Fun_entity
    ____________    __________

    [2]             [2.6667]  

Ich habe das Gefühl, dass ich das Funktionshandle verwenden muss@ im falschen Kontext. Kann mich jemand aufklären? (Bemerkung, wie in den Kommentaren vermerkt die Anzeige vonans ist seltsam, weilmymean gibt ein Zellenarray zurück. Dies war ein unbeabsichtigter Fehler.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage