varfun

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

Описание

пример

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

Функциональный func должен взять один входной параметр и возвращаемые массивы с одинаковым числом строк каждый раз, когда это называется. iпеременная th в выходном аргументе, B{:,i}, равно func(A{:,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     0.71     0.23
    02-Jan-2016    -2.05     0.12
    02-Jan-2016    -0.35    -0.18
    03-Jan-2016    -0.82     0.23
    04-Jan-2016     1.57     0.41
    04-Jan-2016     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        1          0.71      0.23 
    02-Jan-2016        2          -1.2     -0.03 
    03-Jan-2016        1         -0.82      0.23 
    04-Jan-2016        2          0.83     0.215 

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

свернуть все

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

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

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

Входная таблица в виде таблицы или расписания.

Аргументы name-value

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

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

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

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

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

Значение 'GroupingVariables' задает, какие табличные переменные являются сгруппированными переменными, не их типами данных. Сгруппированная переменная может быть числовой, или иметь тип данных categoricalcalendarDurationdatetimeдлительностьлогический, или string.

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

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

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

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

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

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

Формат BВ виде разделенной запятой пары, состоящей из 'OutputFormat' и любой значение 'uniform'Таблицарасписание, или 'cell'.

'table'

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

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

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

'timetable'

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

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

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

'uniform'

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

'cell'

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

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

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

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

    identifier

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

    message

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

    index

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

    name

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

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

Например,

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

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

свернуть все

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

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

Введенный в R2013b