Применить функцию к переменным таблицы или расписания
применяет функцию B
= varfun(func
,A
)func
отдельно к каждой переменной таблицы или timetable A
и возвращает результаты в таблице или timetable B
.
Функция func
должен взять один входной параметр и возвращать массивы с одинаковым числом строк каждый раз, когда он вызывается. The i
вторая переменная в выходном аргументе, B{:,i}
, равно func(A{:,i})
.
Если A
является расписанием и func
агрегирует данные по группам строк, затем varfun
присваивает время первой строки из каждой группы строк в A
как соответствующее время строки в B
. Как вернуться B
как таблица без времени строки задайте 'OutputFormat'
как 'table'
.
применяет функцию B
= varfun(func
,A
,Name,Value
)func
отдельно к каждой переменной таблицы или timetable 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
, а не каждой полной переменной.
Если какая-либо сгруппированная переменная содержит 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
fails, задается как разделенная разделенными запятой парами, состоящая из 'ErrorHandler'
и указатель на функцию. Задайте эту функцию так, чтобы она повторно выдавала ошибку или возвращала допустимые выходы для функции func
.
MATLAB вызывает указанную функцию обработки ошибок с двумя входными параметрами:
Структура с этими полями:
| Идентификатор ошибки. |
| Текст сообщения об ошибке. |
| Индекс переменной, для которой произошла ошибка. |
| Имя переменной, для которой произошла ошибка. |
Набор входных параметров для работы func
в момент ошибки.
Для примера,
function [A, B] = errorFunc(S, varargin)
warning(S.identifier, S.message)
A = NaN; B = NaN;
Эта функция поддерживает длинные массивы с ограничениями:
The func
вход должен всегда возвращать длинный массив.
Поддерживаемые пары "имя-значение":
'InputVariables'
- Не может быть задан как указатель на функцию.
'OutputFormat'
- Значение может быть 'uniform'
, 'table'
, 'timetable'
, или 'cell'
только.
Когда массив входа является длинным расписанием и 'OutputFormat'
является 'timetable'
заданная функция должна вернуть массив с таким же размером в первой размерности, как и вход. Задайте 'OutputFormat'
как 'table'
когда функция входа является функцией редукции, такой как mean
.
Для получения дополнительной информации см. Раздел «Длинные массивы»
Указания и ограничения по применению:
Вход указателя на функцию, func
, должно быть постоянным.
В то время как указатели на функцию могут быть входами в varfun
сами они не могут быть входами в ваши функции точки входа. Задайте func
в коде, предназначенном для генерации кода. Для получения дополнительной информации смотрите Ограничения указателя на функцию для генерации кода (MATLAB Coder).
Значения для всех аргументов в виде имя-значение должны быть постоянными.
The 'ErrorHandler'
аргумент имя-значение не поддерживается для генерации кода.
Входные параметры переменного размера не поддерживаются.
Сгруппированные переменные не могут иметь повторяющихся значений в сгенерированном коде.
Вы не можете задать значение 'OutputFormat'
как 'cell'
если вы задаете 'GroupingVariables'
аргумент имя-значение, и функция возвращает различные типы данных для каждой переменной, заданной в 'InputVariables'
.
Если вход является расписанием, и вы задаете 'GroupingVariables'
, тогда выход всегда является неправильным расписанием.
Если вы задаете группы, и количество групп не известно во время компиляции, и это число равняется нулю, то пустые двойные переменные в выходе могут иметь размеры 1 на 0 в сгенерированном коде. В MATLAB такие переменные имеют размеры 0 на 0.
arrayfun
| cellfun
| convertvars
| findgroups
| groupsummary
| rowfun
| splitapply
| structfun
| vartype
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.