varfun

Примените функцию к переменным таблицы или расписания

Синтаксис

B = varfun(func,A)
B = varfun(func,A,Name,Value)

Описание

пример

B = varfun(func,A) применяет функциональный func отдельно к каждой переменной таблицы или расписания A и возвращает результаты в таблице или расписании B.

Функциональный func должен взять один входной параметр и возвращаемые массивы с тем же количеством строк каждый раз, когда это называется. i th переменная в выходном аргументе, B{:,i}, равен func(A{:,i}) i.

Если A является расписанием, и func агрегировал данные по группам строк, то varfun присваивает в первый раз строки от каждой группы строк в A как соответствующее время строки в B. Чтобы возвратить B как таблицу без времен строки, задайте 'OutputFormat' как 'table'.

пример

B = varfun(func,A,Name,Value) применяет функциональный func отдельно к каждой переменной таблицы или расписания A с дополнительными опциями, заданными одним или несколькими аргументами пары Name,Value.

Например, можно задать который переменные передать функции.

Примеры

свернуть все

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

Задайте таблицу, содержащую числовые переменные.

A = table([0.71;-2.05;-0.35;-0.82;1.57],[0.23;0.12;-0.18;0.23;0.41])
A=5×2 table
    Var1     Var2 
    _____    _____

     0.71     0.23
    -2.05     0.12
    -0.35    -0.18
    -0.82     0.23
     1.57     0.41

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

func = @(x) x.^2;

Примените функцию ко всем переменным таблицы A.

B = varfun(func,A)
B=5×2 table
    Fun_Var1    Fun_Var2
    ________    ________

     0.5041      0.0529 
     4.2025      0.0144 
     0.1225      0.0324 
     0.6724      0.0529 
     2.4649      0.1681 

Переменные B имеют имена на основе функции и имен переменных от A.

Вычислите среднее значение каждой переменной в 5 2 таблица.

Задайте таблицу, содержащую числовые переменные.

A = table([0.71;-2.05;-0.35;-0.82;1.57],[0.23;0.12;-0.18;0.23;0.41])
A=5×2 table
    Var1     Var2 
    _____    _____

     0.71     0.23
    -2.05     0.12
    -0.35    -0.18
    -0.82     0.23
     1.57     0.41

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

func = @mean;

func использует существующую функцию MATLAB®, чтобы задать операцию.

Примените функцию ко всем переменным таблицы A.

B = varfun(func,A)
B=1×2 table
    mean_Var1    mean_Var2
    _________    _________

     -0.188        0.162  

B является таблицей, содержащей среднее значение от каждой переменной. Чтобы возвратить числовой вектор вместо таблицы, можно использовать B = varfun(func,A,'OutputFormat','uniform').

Вычислите мудрые группой средние значения переменных в таблице, A, и возвратите их как строки в таблице, B.

Составьте таблицу, где одна переменная задает группы.

A = table({'test2';'test1';'test2';'test3';'test1'},...
    [0.71;-2.05;-0.35;-0.82;1.57],[0.23;0.12;-0.18;0.23;0.41])
A=5×3 table
     Var1      Var2     Var3 
    _______    _____    _____

    'test2'     0.71     0.23
    'test1'    -2.05     0.12
    'test2'    -0.35    -0.18
    'test3'    -0.82     0.23
    'test1'     1.57     0.41

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

func = @mean;

func использует существующую функцию MATLAB®, чтобы задать операцию.

Примените функцию к каждой группе данных, заданных Var1.

B = varfun(func,A,'GroupingVariables','Var1')
B=3×4 table
     Var1      GroupCount    mean_Var2    mean_Var3
    _______    __________    _________    _________

    'test1'        2           -0.24        0.265  
    'test2'        2            0.18        0.025  
    'test3'        1           -0.82         0.23  

B содержит переменную под названием GroupCount, чтобы указать на количество записей из таблицы A в той группе.

Создайте расписание, содержащее демонстрационные данные. Времена строки расписания также задают группы.

dt = datetime(2016,1,1)+days([0 1 1 2 3 3])';
A = timetable(dt,[0.71;-2.05;-0.35;-0.82;1.57;0.09],...
              [0.23;0.12;-0.18;0.23;0.41;0.02],...
              'VariableNames',{'x' 'y'})
A=6×2 timetable
             dt               x        y  
    ____________________    _____    _____

    01-Jan-2016 00:00:00     0.71     0.23
    02-Jan-2016 00:00:00    -2.05     0.12
    02-Jan-2016 00:00:00    -0.35    -0.18
    03-Jan-2016 00:00:00    -0.82     0.23
    04-Jan-2016 00:00:00     1.57     0.41
    04-Jan-2016 00:00:00     0.09     0.02

Вычислите мудрые группой средние значения переменных в расписании. varfun возвращает B как расписание, потому что A является расписанием. Когда вы задаете времена строки как группирующуюся переменную, вы не можете задать переменную как другую переменную группировки.

B = varfun(@mean,A,'GroupingVariables','dt')
B=4×3 timetable
             dt             GroupCount    mean_x    mean_y
    ____________________    __________    ______    ______

    01-Jan-2016 00:00:00        1          0.71      0.23 
    02-Jan-2016 00:00:00        2          -1.2     -0.03 
    03-Jan-2016 00:00:00        1         -0.82      0.23 
    04-Jan-2016 00:00:00        2          0.83     0.215 

Входные параметры

свернуть все

Функция, заданная как указатель на функцию. Можно задать функцию в файле или как анонимная функция. Если func соответствует больше чем одному функциональному файлу (то есть, если func представляет набор перегруженных функций), MATLAB® определяет который функция вызвать на основе класса входных параметров.

Используйте аргумент в виде пар "имя-значение" 'OutputFormat','cell', если функциональное взятие func, один входной параметр и возвращает массивы с различные количества строк каждый раз, когда это называется. В противном случае func должен возвращаемые массивы с тем же количеством строк.

Пример: func = (x) x.^2; вычисляет квадрат каждого элемента входного параметра.

Входная таблица, заданная как таблица или расписание.

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Имя должно появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'InputVariables', 2 использования только вторая переменная в как входной параметр к func.

Спецификаторы для выбора переменных A, чтобы передать func, заданному как пара, разделенная запятой, состоящая из 'InputVariables' и положительного целого числа, вектора положительных целых чисел, вектора символа, массива ячеек из символьных векторов, массива строк, логического вектора или указателя на функцию.

Если вы задаете 'InputVariables' как указатель на функцию, то он должен возвратить логический скаляр, и varfun передает только переменные в A, куда функция возвращает 1 (true).

Одна или несколько переменных в A, которые задают группы строк, заданных как пара, разделенная запятой, состоящая из 'GroupingVariables' и положительного целого числа, вектора положительных целых чисел, вектора символа, массива ячеек из символьных векторов, массива строк или логического вектора.

Значение 'GroupingVariables' задает, какие табличные переменные являются группирующимися переменными, не их типами данных. Группирующаяся переменная может быть числовой, или иметь тип данных categorical, calendarDuration, datetime, duration, logical или string.

Строки в A, которые имеют те же значения переменных группировки, принадлежат той же группе. varfun применяет func к каждой группе строк в каждой из переменных A, а не к каждой целой переменной.

Если какая-либо переменная группировки содержит NaN s или отсутствующие значения (такие как NaT s, неопределенные категориальные значения или отсутствующие строки), то соответствующие строки не принадлежат никакой группе и исключены из вывода.

Метки строки могут группировать переменные. Можно сгруппироваться на одних только метках строки на одной или нескольких переменных в A, или на метках строки и переменных вместе.

  • Если A является таблицей, то метки являются именами строки.

  • Если A является расписанием, то метки являются временами строки.

Вывод, B, ссорится для каждой группы, когда вы задаете 'OutputFormat','uniform' или 'OutputFormat','cell'. Когда вы задаете 'OutputFormat','table' или 'OutputFormat','timetable', размеры выходных параметров от func определяют, сколько строк B соответствует каждой группе.

Формат B, заданного как пара, разделенная запятой, состоящая из 'OutputFormat' и или значение 'uniform', 'table', 'timetable', или 'cell'.

Таблица

varfun возвращает таблицу с одной переменной для каждой переменной в A (или каждой переменной, заданной с 'InputVariables'). Для сгруппированного вычисления, B, также содержит группирующиеся переменные.

'table' позволяет вам использовать функцию, которая возвращает значения различных размеров или типов данных для различных переменных в A. Однако для разгруппированного вычисления, func должен возвращаемые массивы с тем же количеством строк каждый раз, когда это называется. Для сгруппированного вычисления func должен возвращаемые значения с тем же количеством строк каждый раз, когда это называется для данной группы.

Если A является таблицей, то это - выходной формат по умолчанию.

расписание

varfun возвращает расписание с одной переменной для каждой переменной в A (или каждой переменной, заданной с 'InputVariables'). Для сгруппированного вычисления B также содержит группирующиеся переменные.

varfun создает времена строки B со времен строки A. Если времена строки, присвоенные B, не целесообразны в контексте вычислений, выполняемых с помощью func, то задайте выходной формат как 'OutputFormat','table'.

Если A является расписанием, то это - выходной формат по умолчанию.

'uniform'

varfun конкатенирует значения в вектор. func должен возвратить скаляр с совпадающим типом данных каждый раз, когда это называется.

ячейка

varfun возвращает B как массив ячеек. 'cell' позволяет вам использовать функцию, которая возвращает значения различных размеров или типов данных.

Функция, чтобы вызвать, если func перестал работать, заданный как пара, разделенная запятой, состоящая из 'ErrorHandler' и указателя на функцию. Задайте эту функцию так, чтобы она повторно выдала ошибку или возвратила допустимые выходные параметры для функционального func.

MATLAB вызывает заданную функцию обработки ошибок с двумя входными параметрами:

  • Структура с этими полями:

    identifier

    Ошибочный идентификатор.

    сообщение

    Текст сообщения об ошибке.

    index

    Индекс переменной, для которой произошла ошибка.

    имя

    Имя переменной, для которой произошла ошибка.

  • Набор входных параметров, чтобы функционировать func во время ошибки.

Например,

function [A, B] = errorFunc(S, varargin)
warning(S.identifier, S.message)
A = NaN; B = NaN;

Выходные аргументы

свернуть все

Выведите таблицу, возвращенную как таблица или расписание. B может сохранить метаданные, такие как описания, переменные модули, имена переменных и имена строки. Для получения дополнительной информации смотрите разделы Свойств table или timetable.

Расширенные возможности

Введенный в R2013b

Была ли эта тема полезной?