exponenta event banner

datasetfun

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

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

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.

См. также