datasetfun

Класс: набор данных

(Не Рекомендуемый) Применить функцию к переменным массива набора данных

The dataset тип данных не рекомендуется. Для работы с неоднородными данными используйте MATLAB® table вместо этого тип данных. См. MATLAB table документация для получения дополнительной информации.

Синтаксис

b = datasetfun(fun,A)
[b,c,...] = datasetfun(fun,A)
[b,...] = datasetfun(fun,A,...,'UniformOutput',false)
[b,...] = datasetfun(fun,A,...,'DatasetOutput',true)
[b,...] = datasetfun(fun,A,...,'DataVars',vars)
[b,...] = datasetfun(fun,A,...,'ObsNames',obsnames)
[b,...] = datasetfun(fun,A,...,'ErrorHandler',efun)

Описание

b = datasetfun(fun,A) применяет функцию, заданную в fun каждой переменной массива набора данных A, и возвращает результаты в векторе b. i-й элемент b равно fun применяется к i-й переменной набора данных A. fun - указатель на функцию функции, который принимает один входной параметр и возвращает скалярное значение. fun должен возвращать значения одного и того же класса каждый раз, когда он вызывается, и datasetfun конкатенирует их в вектор b. Выходы fun должен быть одним из следующих типов: числовой, логический, символ, структура или камера.

Чтобы применить функции, которые возвращают результаты, которые являются нескаляра или разных размеров и типов, используйте 'UniformOutput' или 'DatasetOutput' параметры, описанные ниже.

Не полагайтесь на порядок, в котором datasetfun вычисляет элементы b, что не задано.

Если fun привязан к нескольким встроенным функциям или файлам (то есть, если он представляет собой набор перегруженных функций), datasetfun следует MATLAB правилам диспетчеризации при вызове функции. (См. «Порядок приоритета функции».)

[b,c,...] = datasetfun(fun,A), где fun - указатель на функцию в функцию, которая возвращает несколько выходов, возвращает векторы b, c,..., каждый из которых соответствует одному из выходных аргументов fun. datasetfun вызывает fun каждый раз с таким количеством выходов, как в вызове datasetfun. fun может возвращать выходные аргументы, имеющие различные классы, но класс каждого выхода должен быть одинаковым каждый раз fun вызывается.

[b,...] = datasetfun(fun,A,...,'UniformOutput',false) позволяет вам задать функцию fun который возвращает значения различных размеров или типов. datasetfun возвращает массив ячеек (или несколько массивов ячеек), где i-я камера содержит значение fun применяется к i-й переменной набора данных A. Настройка 'UniformOutput' на true эквивалентно поведению по умолчанию.

[b,...] = datasetfun(fun,A,...,'DatasetOutput',true) указывает, что выходы (выходы ) fun возвращаются как переменные в массиве набора данных (или нескольких массивах набора данных). fun должен возвращать значения с одинаковым числом строк каждый раз, когда он вызывается, но может возвращать значения любого типа. Переменные в массивах (массивах ) (ах) выходного набора данных имеют те же имена, что и переменные во входе. Настройка 'DatasetOutput' на false (по умолчанию) указывает, что тип выходов (выходов ) datasetfun определяется 'UniformOutput'.

[b,...] = datasetfun(fun,A,...,'DataVars',vars) позволяет применять fun только к переменным набора данных в A определяется vars. vars - положительное целое число, вектор положительных целых чисел, вектор символов, строковые массивы, массив ячеек векторов символов или логический вектор.

[b,...] = datasetfun(fun,A,...,'ObsNames',obsnames) задает имена наблюдений для выхода набора данных при 'DatasetOutput' является true.

[b,...] = datasetfun(fun,A,...,'ErrorHandler',efun), где efun является указателем на функцию, задает функцию MATLAB для вызова, если вызов fun сбой. Функция обработки ошибок вызывается со следующими входными параметрами:

  • Структура с полями identifier, message, и index, соответственно содержащий идентификатор произошедшей ошибки, текст сообщения об ошибке и линейный индекс во входные массивы (массивы ) (ы), в котором произошла ошибка

  • Набор входных параметров, при котором не удалось вызвать функцию

Функция обработки ошибок должна либо повторно выдать ошибку, либо вернуть то же количество выходов, что и fun. Эти выходы затем возвращаются как выходы datasetfun. Если 'UniformOutput' true, выходы обработчика ошибок должны также быть скалярами того же типа, что выходы fun. Например, следующий код может быть сохранен в файле как функция обработки ошибок:

function [A,B] = errorFunc(S,varargin)

warning(S.identifier,S.message); 
A = NaN; 
B = NaN;

Если функция обработки ошибок не задана, ошибка от вызова к fun переметается.

Примеры

расширить все

Используйте указатели на функцию, чтобы вычислить среднее значение и построить гистограмму выбранных переменных в массиве набора данных.

Загрузите выборочные данные.

load hospital

Использование datasetfun вычислить средства Weight и BloodPressure переменные и сохраните результаты в массиве набора данных.

stats = datasetfun(@mean,hospital,...
        'DataVars',{'Weight','BloodPressure'},...
        'UniformOutput',false)
stats=1×2 cell array
    {[154]}    {[122.7800 82.9600]}

Переменная BloodPressure содержит два столбца: Один для сестрического измерения и один для диастолического измерения.

Отобразите среднее значение переменной артериального давления.

stats{2}
ans = 1×2

  122.7800   82.9600

Постройте гистограмму переменной артериального давления.

datasetfun(@hist,hospital,...
           'DataVars','BloodPressure',...
           'UniformOutput',false);
title('{\bf Blood Pressure}')
legend('Systolic','Diastolic','Location','N')

Figure contains an axes. The axes with title {\bf Blood Pressure} contains 2 objects of type patch. These objects represent Systolic, Diastolic.

См. также