Примените функцию к переменным таблицы или расписания
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})
.
Если 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×3 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×4 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
соответствует больше чем одному файлу функции (то есть, если func
представляет набор перегруженных функций), MATLAB® определяет который функция вызвать на основе класса входных параметров.
Используйте аргумент пары "имя-значение" 'OutputFormat','cell'
, если функциональный func
берет один входной параметр, и возвращает массивы с различные количества строк каждый раз, когда это называется. В противном случае func
должен возвращаемые массивы с одинаковым числом строк.
Пример: func = @(x) x.^2;
вычисляет квадрат каждого элемента входа.
A
Входная таблицаВходная таблица, заданная как таблица или расписание.
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение.
Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
'InputVariables',2
использует только вторую переменную в A
как вход к func
.'InputVariables'
— Спецификаторы для выбора переменных A
, чтобы передать func
Спецификаторы для выбора переменных A
, чтобы передать func
, заданному как пара, разделенная запятой, состоящая из 'InputVariables'
и положительного целого числа, вектора положительных целых чисел, вектора символов, массива ячеек из символьных векторов, массива строк, логического вектора или указателя на функцию.
Если вы задаете 'InputVariables'
как указатель на функцию, то он должен возвратить логический скаляр, и varfun
передает только переменные в A
, куда функция возвращает 1
(true
).
Группировка переменных
Одна или несколько переменных в A
, которые задают группы строкОдна или несколько переменных в 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
соответствует каждой группе.
'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;
Эта функция поддерживает высокие массивы с ограничениями:
Вход func
должен всегда возвращать длинный массив.
Поддерживаемые пары "имя-значение":
'InputVariables'
— Не может быть задан как указатель на функцию.
'OutputFormat'
Значением может быть 'uniform'
, 'table'
, 'timetable'
или 'cell'
только.
Когда входной массив является длинным расписанием, и 'OutputFormat'
является 'timetable'
, заданная функция должна возвратить массив с тем же размером в первой размерности как вход. Задайте 'OutputFormat'
как 'table'
, когда функция ввода будет функцией сокращения, такой как mean
.
Для получения дополнительной информации см. Раздел "Высокие массивы".
arrayfun
| cellfun
| findgroups
| groupsummary
| rowfun
| splitapply
| structfun
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.