Come @Gunther menzionato nei commenti di cui sopra, una funzione generica per gestire sim condizioni per imitare l'operatore terziario?: può essere creato per circumnavigare la limitazione che Matlab non consente condizionali all'interno di funzioni anon (se non si contano quella versione inline disordinata, inefficiente ma divertente :).
La soluzione è stata presentata tramite questo link (e forse pochi altri posti ma SO è tornato in cima alla mia ricerca su google, quindi ho pensato che sarebbe bello aggiungere qui). http://www.mathworks.co.jp/matlabcentral/newsreader/view_thread/158054
definiscono una funzione dire sse o IfElse e inserirlo al percorso Matlab.
function result = ifelse(condition,trueResult,falseResult)
error(nargchk(3,3,nargin)); % check correct number of input args
if condition
result = trueResult;
else
result = falseResult;
end
quindi utilizzare come questo
predict = arrayfun(@(x) ifelse(x>=0.5,1,0), inputData);
Nel caso del PO, qualcosa di simile potrebbe essere utilizzato
arrayfun(@(x) ifelse(abs(x)<3,x^.2,0), data)
fonte
2014-07-21 19:59:43
possibile duplicato di [Come eseguire più istruzioni in una funzione anonima MATLAB?] (Http://stackoverflow.com/questions/558478/how-to-execute-multiple-statements-in-a-matlab-anonymous- funzione) – Shai
@Shai: non sono d'accordo. Quella domanda riguarda le valutazioni di più funzioni in un singolo anon, mentre si tratta di valutazione condizionale in un anon (c'è * un * dupe, l'ho visto, ma non lo trovo ora ...) –