rowfun

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

Синтаксис

B = rowfun(func,A)
B = rowfun(func,A,Name,Value)

Описание

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, 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 является группирующейся переменной.

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, используйте аргументы в виде пар "имя-значение" 'OutputVariableNames' или 'NumOutputs'.

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

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

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

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

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

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

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

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

Значение 'GroupingVariables' задает, какие табличные переменные являются группирующимися переменными, не их типами данных. Группирующаяся переменная может быть числовой, или иметь тип данных categorical, calendarDuration, datetime, duration, logical или string.

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

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

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

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

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

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

tRUE

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

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

ложь

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

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

tRUE

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

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

ложь

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'.

Таблица

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

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

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

расписание

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

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

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

'uniform'

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

ячейка

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

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

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

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

    identifier

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

    сообщение

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

    index

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

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

Например,

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

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

свернуть все

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

Введенный в R2013b

Была ли эта тема полезной?