rowfun

Примените функцию к строкам таблицы или расписания

Описание

B = rowfun(func,A) применяет функциональный func к каждой строке таблицы или расписания A и возвращает результаты в таблице или расписании 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, с двумя переменными числовых данных.

x = gallery('integerdata',10,[5,1],2);
y = gallery('integerdata',10,[5,1],8);

A = table(x,y)
A=5×2 table
    x    y 
    _    __

    9     1
    4     5
    3     2
    7     3
    1    10

Примените функцию, hypot, к каждой строке A. Функциональный hypot берет два входных параметров и возвращает один выходной параметр.

B = rowfun(@hypot,A,'OutputVariableNames','z')
B=5×1 table
      z   
    ______

    9.0554
    6.4031
    3.6056
    7.6158
     10.05

B таблица.

Добавьте функциональный выход, B, к входной таблице, A.

[A B]
ans=5×3 table
    x    y       z   
    _    __    ______

    9     1    9.0554
    4     5    6.4031
    3     2    3.6056
    7     3    7.6158
    1    10     10.05

Задайте и примените модель геометрического броуновского движения к области значений параметров.

Создайте функцию в файле с именем 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, mtrueS, и 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 сгруппированная переменная.

g = gallery('integerdata',3,[15,1],1);
x = gallery('uniformdata',[15,1],9);
y = gallery('uniformdata',[15,1],2);

A = table(g,x,y)
A=15×3 table
    g       x          y    
    _    _______    ________

    3    0.24756     0.87516
    3     0.4358      0.3179
    3    0.97755     0.27323
    2    0.85995      0.6765
    3    0.30063    0.071171
    2    0.26589     0.19659
    3    0.13338     0.52908
    2     0.7425     0.17176
    1    0.85692     0.86996
    2    0.24286     0.24369
    3    0.19492     0.84291
    2    0.39076     0.55766
    1    0.29683     0.35681
    1    0.39031      0.2324
    2    0.18726      0.6476

Задайте анонимную функцию, 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        3         0.028298
    2        6         0.032569
    3        6         -0.10327

Переменная GroupCount указывает на количество строк в A для каждой группы.

Входные параметры

свернуть все

Функция, определенный функцией указатель. Можно задать функцию в файле или как анонимная функция. Если func соответствует больше чем одному файлу функции (то есть, если func представляет набор перегруженных функций), MATLAB® определяет который функция вызвать на основе класса входных параметров.

func может принять не больше, чем size(A,2) входные параметры. По умолчанию, rowfun возвращает сначала выходной параметр func. Возвращать больше, чем один выходной параметр func, используйте 'NumOutputs' или 'OutputVariableNames' аргументы в виде пар имя-значение.

Пример: func = @(x,y) x.^2+y.^2; берет два входных параметров и находит сумму квадратов.

Входная таблица, заданная как таблица или расписание.

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'InputVariables',2 использование только вторая переменная в A как вход к func.

Спецификаторы для выбора переменных A передать func, заданный как разделенная запятой пара, состоящая из 'InputVariables' и положительное целое число, вектор положительных целых чисел, вектора символов, массива ячеек из символьных векторов, массива строк, логического вектора или указателя на функцию.

Если вы задаете 'InputVariables' как указатель на функцию, затем это должно возвратить логический скаляр и rowfun передачи только переменные в A куда функция возвращает 1 TRUE).

Одна или несколько переменных в A это задает группы строк, заданных как разделенная запятой пара, состоящая из 'GroupingVariables' и положительное целое число, вектор положительных целых чисел, вектора символов, массива ячеек из символьных векторов, массива строк или логического вектора.

Значение 'GroupingVariables' задает, какие табличные переменные являются сгруппированными переменными, не их типами данных. Сгруппированная переменная может быть числовой, или иметь тип данных categoricalcalendarDurationdatetimeдлительностьлогический, или string.

Строки в A это имеет те же значения сгруппированной переменной, принадлежат той же группе. rowfun применяет func каждой группе строк, а не отдельно к каждой строке A. Выход, B, содержит одну строку для каждой группы.

Если какая-либо сгруппированная переменная содержит NaNs или отсутствующие значения (такие как NaTs, неопределенные категориальные значения или отсутствующие строки), затем соответствующие строки не принадлежат никакой группе и исключены из выхода.

Метки строки могут быть сгруппированными переменными. Можно сгруппироваться на одних только этикетках строки на одной или нескольких переменных в A, или на этикетках строки и переменных вместе.

  • Если A таблица, затем метки являются именами строки.

  • Если A расписание, затем метки являются временами строки.

Индикатор для вызова func с отдельными входными параметрами, заданными как разделенная запятой пара, состоящая из 'SeparateInputs' и любой trueложь, 1, или 0.

true

func ожидает отдельные входные параметры. rowfun вызовы func с size(A,2) входные параметры, один аргумент для каждой переменной данных.

Это поведение по умолчанию.

false

func ожидает один вектор, содержащий все входные параметры. rowfun создает входной вектор к func путем конкатенации значений в каждой строке A.

Индикатор, чтобы передать значения от переменных ячейки до func, заданный как разделенная запятой пара, состоящая из 'ExtractCellContents' и любой falseTRUE, 0, или 1.

true

rowfun извлекает содержимое переменной в A чьим типом данных является cell и передает значения, а не ячейки, к func

Для сгруппированного расчета значения в каждой группе в переменной ячейки должны позволить вертикальную конкатенацию.

false

rowfun передает ячейки переменной в A чьим типом данных является cell к func.

Это поведение по умолчанию.

Имена переменных для выходных параметров func, заданный как разделенная запятой пара, состоящая из 'OutputVariableNames' и вектор символов, массив ячеек из символьных векторов или массив строк, с именами, которые непусты и отличны. Количество имен должно равняться количеству выходных параметров, желаемых от func.

Кроме того, имена переменных должны быть допустимыми идентификаторами MATLAB. Если допустимые идентификаторы MATLAB не доступны для использования в качестве имен переменных, MATLAB использует массив ячеек N векторы символов формы {'Var1'... 'VarN'} где N количество переменных. Можно определить допустимые имена переменной MATLAB с помощью функционального isvarname.

Количество выходных параметров от func, заданный как разделенная запятой пара, состоящая из 'NumOutputs' и 0 или положительное целое число. Целое число должно быть меньше чем или равно возможному количеству выходных параметров от func.

Пример: 'NumOutputs',2 причины rowfun вызывать func с двумя выходными параметрами.

Формат B, заданный как разделенная запятой пара, состоящая из 'OutputFormat' и любой значение 'table', 'uniform', или 'cell'.

'table'

rowfun возвращает таблицу с одной переменной для каждого выхода func. Для сгруппированного расчета, B, также содержит сгруппированные переменные.

'table' позволяет вам использовать функцию, которая возвращает значения различных размеров или типов данных. Однако для разгруппированного расчета, всех выходных параметров от func должен иметь одну строку каждый раз, когда она называется. Для сгруппированного расчета, всех выходных параметров от func должен иметь одинаковое число строк.

Это - выходной формат по умолчанию.

'timetable'

rowfun возвращает расписание с одной переменной для каждой переменной в A (или каждая переменная задана с 'InputVariables'). Для сгруппированного расчета, B также содержит сгруппированные переменные.

rowfun создает времена строки B со времен строки A. Если времена строки, присвоенные B не будьте целесообразны в контексте вычислений, выполняемых с помощью func, затем задайте выходной формат как 'OutputFormat','table'.

Если A расписание, затем это - выходной формат по умолчанию.

'uniform'

rowfun конкатенирует значения, возвращенные func в вектор. Все выходные параметры от func должны быть скаляры с совпадающим типом данных.

'cell'

rowfun возвращает B как массив ячеек. 'cell' позволяет вам использовать функцию, которая возвращает значения различных размеров или типов данных.

Функция, чтобы вызвать, если func сбои, заданные как разделенная запятой пара, состоящая из 'ErrorHandler' и указатель на функцию. Задайте эту функцию так, чтобы она повторно выдала ошибку или возвратила допустимые выходные параметры для функционального func.

MATLAB вызывает заданную функцию обработки ошибок с двумя входными параметрами:

  • Структура с этими полями:

    identifier

    Ошибочный идентификатор.

    message

    Текст сообщения об ошибке.

    index

    Строка или группа индексируют, в котором произошла ошибка.

  • Набор входных параметров, чтобы функционировать func во время ошибки.

Например,

function [A, B] = errorFunc(S, varargin)
warning(S.identifier, S.message);
A = NaN; B = NaN;

Выходные аргументы

свернуть все

Выведите таблицу, возвращенную как таблица или расписание. B может сохранить метаданные, такие как описания, переменные модули, имена переменных и имена строки. Для получения дополнительной информации смотрите разделы Свойств table или timetable.

Введенный в R2013b