Примените функцию к переменным таблицы или расписания
применяет функциональный 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
имя аргумента и 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
длительность
логический
, или 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'
Таблица
расписание
, или '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'
Таблица
расписание
, или 'cell'
только.
Когда входной массив является длинным расписанием и 'OutputFormat'
istimetable
, заданная функция должна возвратить массив с тем же размером в первой размерности как вход. Задайте 'OutputFormat'
как 'table'
когда функция ввода является функцией сокращения, такой как mean
.
Для получения дополнительной информации см. Раздел "Высокие массивы".
arrayfun
| cellfun
| findgroups
| groupsummary
| rowfun
| splitapply
| structfun
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.