Применить функцию к строкам таблицы или расписания
применяет функцию B
= rowfun(func
,A
)func
в каждую строку таблицы или timetable A
и возвращает результаты в таблице или timetable B
.
func
принимает size(A,2)
входы.
Если A
является расписанием и func
агрегирует данные по группам строк, затем rowfun
присваивает время первой строки из каждой группы строк в A
как соответствующее время строки в B
. Как вернуться B
как таблица без времени строки задайте 'OutputFormat'
как 'table'
.
применяет функцию B
= rowfun(func
,A
,Name,Value
)func
к каждой строке таблицы A
с дополнительными опциями, заданными одним или несколькими Name,Value
аргументы в виде пар.
Для примера можно задать, какие переменные передавать в функцию func
и как позвонить func
.
Применить функцию hypot
к каждой строке таблицы 5 на 2 A
чтобы найти кратчайшее расстояние между переменными x
и y
.
Составьте таблицу, A
, с двумя переменными числовых данных.
rng('default')
x = randi(10,[5,1]);
y = randi(10,[5,1]);
A = table(x,y)
A=5×2 table
x y
__ __
9 1
10 3
2 6
10 10
7 10
Примените функцию, hypot
, к каждой строке A
. Функция hypot
принимает два входов и возвращает один выход.
B = rowfun(@hypot,A,'OutputVariableNames','z')
B=5×1 table
z
______
9.0554
10.44
6.3246
14.142
12.207
B
является таблицей.
Добавьте выход функции, B
, к входу таблице, A
.
[A B]
ans=5×3 table
x y z
__ __ ______
9 1 9.0554
10 3 10.44
2 6 6.3246
10 10 14.142
7 10 12.207
Задайте и примените геометрическую брауновскую модель движения к области значений параметров.
Создайте функцию в файле с именем gbmSim.m
который содержит следующий код.
% Copyright 2015 The MathWorks, Inc. function [m,mtrue,s,strue] = gbmSim(mu,sigma) % Discrete approximation to geometric Brownian motion % % [m,mtrue,s,strue] = gbmSim(mu,sigma) computes the % simulated mean, true mean, simulated standard deviation, % and true standard deviation based on the parameters mu and sigma. numReplicates = 1000; numSteps = 100; y0 = 1; t1 = 1; dt = t1 / numSteps; y1 = y0*prod(1 + mu*dt + sigma*sqrt(dt)*randn(numSteps,numReplicates)); m = mean(y1); s = std(y1); % Theoretical values mtrue = y0 * exp(mu*t1); strue = mtrue * sqrt(exp(sigma^2*t1) - 1); end
gbmSim
принимает два входов, mu
и sigma
, и возвращает четыре выхода, m
, mtrue
, s
, и strue
.
Определите таблицу, params
, содержащий параметры для ввода в модель Броуновского движения.
mu = [-.5; -.25; 0; .25; .5]; sigma = [.1; .2; .3; .2; .1]; params = table(mu,sigma)
params = 5x2 table mu sigma _____ _____ -0.5 0.1 -0.25 0.2 0 0.3 0.25 0.2 0.5 0.1
Примените функцию, gbmSim
, к строкам таблицы, params
.
stats = rowfun(@gbmSim,params,... 'OutputVariableNames',... {'simulatedMean' 'trueMean' 'simulatedStd' 'trueStd'})
stats = 5x4 table simulatedMean trueMean simulatedStd trueStd _____________ ________ ____________ ________ 0.60501 0.60653 0.05808 0.060805 0.77916 0.7788 0.161 0.15733 1.0024 1 0.3048 0.30688 1.2795 1.284 0.25851 0.25939 1.6498 1.6487 0.16285 0.16529
Четыре имени переменных, заданные в 'OutputVariableNames'
аргумент пары "имя-значение" указывает, что rowfun
должен получить четыре выхода от gbmSim
. Можно задать меньше имен выходных переменных, чтобы вернуть меньше выходы от gbmSim
.
Добавьте выход функции, stats
, на вход, params
.
[params stats]
ans = 5x6 table mu sigma simulatedMean trueMean simulatedStd trueStd _____ _____ _____________ ________ ____________ ________ -0.5 0.1 0.60501 0.60653 0.05808 0.060805 -0.25 0.2 0.77916 0.7788 0.161 0.15733 0 0.3 1.0024 1 0.3048 0.30688 0.25 0.2 1.2795 1.284 0.25851 0.25939 0.5 0.1 1.6498 1.6487 0.16285 0.16529
Составьте таблицу, A
, где g
является сгруппированной переменной.
rng('default')
g = randi(3,[15,1]);
x = rand([15,1]);
y = rand([15,1]);
A = table(g,x,y)
A=15×3 table
g x y
_ ________ ________
3 0.14189 0.70605
3 0.42176 0.031833
1 0.91574 0.27692
3 0.79221 0.046171
2 0.95949 0.097132
1 0.65574 0.82346
1 0.035712 0.69483
2 0.84913 0.3171
3 0.93399 0.95022
3 0.67874 0.034446
1 0.75774 0.43874
3 0.74313 0.38156
3 0.39223 0.76552
2 0.65548 0.7952
3 0.17119 0.18687
Определите анонимную функцию, func
, чтобы вычислить среднее различие между x
и y
.
func = @(x,y) mean(x-y);
Найдите среднее различие между переменными в группах 1
, 2
, и 3
определяется сгруппированной переменной, g
.
B = rowfun(func,A,... 'GroupingVariable','g',... 'OutputVariableName','MeanDiff')
B=3×3 table
g GroupCount MeanDiff
_ __________ ________
1 4 0.032744
2 3 0.41822
3 8 0.14656
Переменная GroupCount
указывает количество строк в A
для каждой группы.
func
- ФункцияФункция, заданная как указатель на функцию. Вы можете задать функцию в файле или как анонимную функцию. Если func
соответствует нескольким файлам функции (то есть, если func
представляет набор перегруженных функций), MATLAB® определяет, какую функцию вызывать, на основе класса входных параметров.
func
может принять не более size(A,2)
входы. По умолчанию rowfun
возвращает первый выход func
. Возврат нескольких выходов из func
, используйте 'NumOutputs'
или 'OutputVariableNames'
Аргументы пары "имя-значение".
Пример: func = @(x,y) x.^2+y.^2;
принимает два входов и находит сумму квадратов.
A
- Входная таблицаВходная таблица, заданная как таблица или расписание.
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
'InputVariables',2
использует только вторую переменную в A
как вход в func
.'InputVariables'
- Спецификаторы для выбора переменных A
для перехода к func
Спецификаторы для выбора переменных A
для перехода к func
, заданная как разделенная разделенными запятой парами, состоящая из 'InputVariables'
и положительное целое число, вектор положительных целых чисел, вектор символов, массив ячеек из векторов символов, строковые массивы, логический вектор или указатель на функцию.
Если вы задаете 'InputVariables'
как указатель на функцию, тогда он должен вернуть логический скаляр, и rowfun
передает только переменные в A
где функция возвращается 1
(true
).
'GroupingVariables'
- Одна или несколько переменных в A
которые определяют группы строкОдна или несколько переменных в A
которые определяют группы строк, заданные как разделенная разделенными запятой парами, состоящая из 'GroupingVariables'
и положительное целое число, вектор положительных целых чисел, вектор символов, массив ячеек из векторов символов, строковые массивы или логический вектор.
Значение 'GroupingVariables'
определяет, какие табличные переменные являются сгруппированными переменными, а не их типы данных. Сгруппированная переменная может быть числовой или иметь тип данных categorical
, calendarDuration
, datetime
, duration
, logical
, или string
.
Строки в A
которые имеют одинаковые значения сгруппированной переменной, относятся к одной и той же группе. rowfun
применяется func
для каждой группы строк, а не отдельно для каждой строки A
. Выход, B
, содержит по одной строке для каждой группы.
Если какая-либо сгруппированная переменная содержит NaN
s или отсутствующие значения (такие как NaT
s, неопределенные категориальные значения или отсутствующие строки), тогда соответствующие строки не относятся ни к одной группе и исключаются из выхода.
Метки строк могут быть сгруппированными переменными. Можно группировать только по меткам строк, по одной или нескольким переменным в A
, или на метках строк и переменных вместе.
Если A
является таблицей, тогда метки являются именами строк.
Если A
является расписанием, тогда метки являются временами строк.
'SeparateInputs'
- Индикатор вызывающего func
с отдельными входамиtrue
(по умолчанию) | false
| 1
| 0
Индикатор для вызова func
с отдельными входами, заданными как разделенная разделенными запятой парами, состоящая из 'SeparateInputs'
и любой из них true
, false
, 1
, или 0
.
|
Это поведение по умолчанию. |
|
|
'ExtractCellContents'
- Индикатор для передачи значений от переменных камеры к func
false
(по умолчанию) | true
| 0
| 1
Индикатор для передачи значений от переменных камеры к func
, заданная как разделенная разделенными запятой парами, состоящая из 'ExtractCellContents'
и любой из них false
, true
, 0
, или 1
.
|
Для сгруппированных расчетов значения в каждой группе переменной камеры должны допускать вертикальную конкатенацию. |
|
Это поведение по умолчанию. |
'OutputVariableNames'
- Имена переменных для выходов func
Имена переменных для выходов func
, заданная как разделенная разделенными запятой парами, состоящая из 'OutputVariableNames'
и вектор символов, массив ячеек векторов символов или строковых массивов с именами, которые непусты и различны. Количество имен должно равняться количеству выходов, требуемых от func
.
Кроме того, имена переменных должны быть допустимыми идентификаторами MATLAB. Если действительные идентификаторы MATLAB недоступны для использования в качестве имен переменных, MATLAB использует массив ячеек N
векторы символов формы {'Var1'... 'Вар N
где '}
N
- количество переменных. Вы можете определить допустимые имена переменного MATLAB с помощью функции isvarname
.
'NumOutputs'
- Количество выходов от func
0
| положительное целое числоКоличество выходов от func
, заданная как разделенная разделенными запятой парами, состоящая из 'NumOutputs'
и 0
или положительное целое число. Целое число должно быть меньше или равным возможному количеству выходов от func
.
Пример: 'NumOutputs',2
причины rowfun
для вызова func
с двумя выходами.
'OutputFormat'
- Формат B
'table'
(по умолчанию) | 'timetable'
| 'uniform'
| 'cell'
Формат B
, заданная как разделенная разделенными запятой парами, состоящая из 'OutputFormat'
и либо значение 'table'
, 'uniform'
, или 'cell'
.
|
Это формат выхода по умолчанию. |
|
Если |
|
|
|
|
'ErrorHandler'
- Функция для вызова, если func
терпит неудачуФункция для вызова, если func
fails, задается как разделенная разделенными запятой парами, состоящая из 'ErrorHandler'
и указатель на функцию. Задайте эту функцию так, чтобы она повторно выдавала ошибку или возвращала допустимые выходы для функции func
.
MATLAB вызывает указанную функцию обработки ошибок с двумя входными параметрами:
Структура с этими полями:
| Идентификатор ошибки. |
| Текст сообщения об ошибке. |
| Строка или групповой индекс, при котором произошла ошибка. |
Набор входных параметров для работы func
в момент ошибки.
Для примера,
function [A, B] = errorFunc(S, varargin)
warning(S.identifier, S.message);
A = NaN; B = NaN;
arrayfun
| cellfun
| convertvars
| findgroups
| groupsummary
| isvarname
| splitapply
| structfun
| varfun
| vartype
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.