Применение функции к переменным таблицы или расписания
применяет функцию B = varfun(func,A)func отдельно от каждой переменной таблицы или расписания A и возвращает результаты в таблице или расписании B.
Функция func должен принимать один входной аргумент и возвращать массивы с одинаковым количеством строк при каждом вызове. i-я переменная в выходном аргументе, 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 соответствует более чем одному файлу функции (то есть, если func представляет собой набор перегруженных функций), MATLAB ® определяет, какую функцию следует вызвать на основе класса входных аргументов.
Используйте 'OutputFormat','cell' аргумент пары имя-значение, если функция func берёт один входной аргумент и возвращает массивы с разным количеством строк каждый раз при вызове. В противном случае func должен возвращать массивы с одинаковым количеством строк.
Пример: func = @(x) x.^2; вычисляет квадрат каждого элемента ввода.
A - Входная таблицаВходная таблица, заданная как таблица или расписание.
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
'InputVariables',2 использует только вторую переменную в A в качестве входных данных для func.'InputVariables' - спецификаторы для выбора переменных A для передачи в funcСпецификаторы для выбора переменных A для передачи в func, указанная как пара, разделенная запятыми, состоящая из 'InputVariables' и положительное целое число, вектор положительных целых чисел, символьный вектор, клеточный массив символьных векторов, строковый массив, логический вектор или дескриптор функции.
При указании 'InputVariables' как дескриптор функции, то он должен возвратить логический скаляр, и varfun передает только переменные в A где функция возвращает 1 (true).
'GroupingVariables' - Одна или несколько переменных в A которые определяют группы строкОдна или несколько переменных в A которые определяют группы строк, указанные как разделенная запятыми пара, состоящая из 'GroupingVariables' и положительное целое число, вектор положительных целых чисел, символьный вектор, клеточный массив символьных векторов, строковый массив или логический вектор.
Значение 'GroupingVariables' указывает, какие переменные таблицы являются переменными группировки, а не их типами данных. Переменная группировки может быть числовой или иметь тип данных categorical, calendarDuration, datetime, duration, logical, или string.
Строки в A которые имеют одинаковые значения переменной группировки, принадлежат к одной группе. varfun применяется func к каждой группе строк в каждой из переменных A, а не для каждой переменной целиком.
Если какая-либо переменная группирования содержит NaNs или отсутствующие значения (например, NaTs, неопределенные категориальные значения или отсутствующие строки), то соответствующие строки не принадлежат ни к одной группе и исключаются из вывода.
Метки строк могут быть переменными группировки. Можно группировать только по меткам строк, по одной или нескольким переменным в Aили на метках строк и переменных вместе.
Если A является таблицей, то метки являются именами строк.
Если A является расписанием, то метки - время строки.
Выходные данные, B, имеет одну строку для каждой группы при указании 'OutputFormat','uniform' или 'OutputFormat','cell'. При указании 'OutputFormat','table' или 'OutputFormat','timetable', размеры выходов из func определить, сколько строк B соответствуют каждой группе.
'OutputFormat' - Формат B'table' (по умолчанию) | 'timetable' | 'uniform' | 'cell'Формат B, указанная как пара, разделенная запятыми, состоящая из 'OutputFormat' и либо значение 'uniform', 'table', 'timetable', или 'cell'.
|
Если |
|
Если |
|
|
|
|
'ErrorHandler' - Функция для вызова, если func терпит неудачуФункция для вызова, если func ошибка, указанная как пара, разделенная запятыми, состоящая из 'ErrorHandler' и дескриптор функции. Определите эту функцию так, чтобы она повторяла ошибку или возвращала допустимые выходы для функции func.
MATLAB вызывает указанную функцию обработки ошибок с двумя входными аргументами:
Структура со следующими полями:
| Идентификатор ошибки. |
| Текст сообщения об ошибке. |
| Индекс переменной, для которой произошла ошибка. |
| Имя переменной, для которой произошла ошибка. |
Набор входных аргументов для функции func во время ошибки.
Например,
function [A, B] = errorFunc(S, varargin)
warning(S.identifier, S.message)
A = NaN; B = NaN;Эта функция поддерживает массивы tall с ограничениями:
func ввод всегда должен возвращать массив с высоким значением.
Поддерживаемые пары имя-значение:
'InputVariables' - Не может быть указан как дескриптор функции.
'OutputFormat' - Значение может быть 'uniform', 'table', 'timetable', или 'cell' только.
Когда входной массив является высоким расписанием и 'OutputFormat' является 'timetable', указанная функция должна возвращать массив с тем же размером в первом измерении, что и входной. Определить 'OutputFormat' как 'table' когда входная функция является функцией уменьшения, такой как mean.
Дополнительные сведения см. в разделе Массивы Tall.
Примечания и ограничения по использованию:
Ввод дескриптора функции, func, должно быть постоянным.
В то время как дескрипторы функций могут быть входами в varfun сами по себе они не могут быть входами в функции точки входа. Определить func в коде, предназначенном для генерации кода. Дополнительные сведения см. в разделе Ограничения обработки функций для генерации кода (кодер MATLAB).
Значения для всех аргументов «имя-значение» должны быть постоянными.
'ErrorHandler' аргумент name-value не поддерживается для создания кода.
Входные аргументы переменного размера не поддерживаются.
Переменные группировки не могут иметь повторяющиеся значения в сгенерированном коде.
Нельзя указать значение 'OutputFormat' как 'cell' при указании 'GroupingVariables' аргумент name-value и функция возвращает другой тип данных для каждой переменной, указанной 'InputVariables'.
Если ввод является расписанием и вы указываете 'GroupingVariables', то выход всегда нерегулярное расписание.
Если указать группы и количество групп неизвестно во время компиляции, и это число равно нулю, то пустые двойные переменные в выходных данных могут иметь размеры 1 на 0 в сгенерированном коде. В MATLAB такие переменные имеют размеры 0-на-0.
arrayfun | cellfun | convertvars | findgroups | groupsummary | rowfun | splitapply | structfun | vartype
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.