2015-02-26 8 views
8

Wie kann ich mithilfe von cellfun eine Funktion auf alle Zellen anwenden, die mit der Funktion mat2cell erstellt wurden? Meine Funktion ist in einer anderen Datei definiert, hier wird sie mit myFunc bezeichnet. Diese Funktion benötigt zwei Argumente, die eine Zelle und eine ganze Zahl sein sollten.Wie verwende ich eine Funktion mit mehreren Parametern mit `cellfun` (MATLAB)?

z.B. function H = myFunc(img,Q)

Mein Code ist wie folgt:

% Split into grid and process each cell 
width = size(img,2) % get image width 
height = size(img,1) % get image height 
depth = size(img,3) % get depth 
C = mat2cell(img,[height/2 height/2],[width/2 width/2],[depth/2 depth/2]); % divides image into sections 
F = cellfun(@myFunc,C); 
save(fout,'F'); 

Das Problem natürlich mit der Linie ist F = cellfun(@myFunc,C);. Wie gebe ich die Zellen und eine gewählte ganze Zahl, z. 4 in myFunc für jede Zelle?

Vielen Dank.

Antwort

11

Nun, einfach eine neue anonyme Funktion als @(x) myFunc(x,4) definieren und es auf diese Weise verwenden:

F = cellfun(@(x) myFunc(x,4), C) 
+0

Danke das ist es! :) – petehallw

4

Durch eine anonyme Funktion:

F = cellfun(@(Q) myFunc(Q,4),C);