Пропуск выводов с анонимной функцией в MATLAB

Скажите, что я хочу создать анонимную функцию из m-file-function, который возвращает два вывода. Действительно ли возможно настроить анонимную функцию, таким образом, что это только возвращает второй вывод из m-file-function?

Пример: ttest2 возвраты два вывода, t/f и вероятность. Если я хочу использовать t-тест с cellfun, Я мог бы только интересоваться сбором вероятностей, т.е. я хотел бы записать что-то вроде этого

probabilities = cellfun(@(u,v)ttest2(u,v)%take only second output%,cellArray1,cellArray2)
16
задан Jonas 22 June 2010 в 19:03
поделиться

1 ответ

Не существует известного мне способа внутри выражения анонимной функции, чтобы она выбирала, какой выход вернуть из функции с несколькими возможными выходными аргументами. Однако вы можете вернуть несколько выходов, когда вы оцениваете анонимную функцию. Вот пример с использованием функции MAX:

>> data = [1 3 2 5 4];  %# Sample data
>> fcn = @(x) max(x);   %# An anonymous function with multiple possible outputs
>> [maxValue,maxIndex] = fcn(data)  %# Get two outputs when evaluating fcn

maxValue =

     5         %# The maximum value (output 1 from max)


maxIndex =

     4         %# The index of the maximum value (output 2 from max)

Кроме того, лучший способ справиться с конкретным примером, который вы привели выше, - это использовать функцию handle @ttest2 в качестве входа для CELLFUN, а затем получить несколько выходов из CELLFUN:

[junk,probabilities] = cellfun(@ttest2,cellArray1,cellArray2);

В новых версиях MATLAB вы можете заменить переменную junk на ~ для игнорирования первого выходного аргумента.

15
ответ дан 30 November 2019 в 22:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: