bsxfun

Примените поэлементную операцию к двум массивам с включенным неявным расширением

Синтаксис

C = bsxfun(fun,A,B)

Описание

пример

C = bsxfun(fun,A,B) применяет поэлементную бинарную операцию, заданную указателем на функцию fun к массивам A и B.

Примеры

свернуть все

Вычтите среднее значение столбца из соответствующих элементов столбца матричного A. Затем нормализуйте стандартным отклонением.

A = [1 2 10; 3 4 20; 9 6 15];
C = bsxfun(@minus, A, mean(A));
D = bsxfun(@rdivide, C, std(A))
D = 3×3

   -0.8006   -1.0000   -1.0000
   -0.3203         0    1.0000
    1.1209    1.0000         0

В MATLAB® R2016b и позже, можно непосредственно использовать операторы вместо bsxfun, поскольку операторы независимо поддерживают неявное расширение массивов с совместимыми размерами.

(A - mean(A))./std(A)
ans = 3×3

   -0.8006   -1.0000   -1.0000
   -0.3203         0    1.0000
    1.1209    1.0000         0

Сравните элементы в векторе - столбце и векторе - строке. Результатом является матрица, содержащая сравнение каждой комбинации элементов от векторов. Эквивалентный способ выполнить эту операцию с A > B.

A = [8; 17; 20; 24]
A = 4×1

     8
    17
    20
    24

B = [0 10 21]
B = 1×3

     0    10    21

C = bsxfun(@gt,A,B)
C = 4x3 logical array

   1   0   0
   1   1   0
   1   1   0
   1   1   1

Создайте указатель на функцию, который представляет функцию.

fun = @(a,b) a - exp(b);

Используйте bsxfun, чтобы применить функцию к векторам a и b. Функция bsxfun расширяет векторы в матрицы, одного размера, который является эффективным способом оценить fun для многих комбинаций входных параметров.

a = 1:7;
b = pi*[0 1/4 1/3 1/2 2/3 3/4 1].';
C = bsxfun(fun,a,b)
C = 7×7

         0    1.0000    2.0000    3.0000    4.0000    5.0000    6.0000
   -1.1933   -0.1933    0.8067    1.8067    2.8067    3.8067    4.8067
   -1.8497   -0.8497    0.1503    1.1503    2.1503    3.1503    4.1503
   -3.8105   -2.8105   -1.8105   -0.8105    0.1895    1.1895    2.1895
   -7.1205   -6.1205   -5.1205   -4.1205   -3.1205   -2.1205   -1.1205
   -9.5507   -8.5507   -7.5507   -6.5507   -5.5507   -4.5507   -3.5507
  -22.1407  -21.1407  -20.1407  -19.1407  -18.1407  -17.1407  -16.1407

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

свернуть все

Двоичная функция, чтобы применяться, заданный как указатель на функцию. fun должен быть двоичным файлом (двух-входной параметр) поэлементная функция формы C = fun(A,B), который принимает массивы A и B с совместимыми размерами. Для получения дополнительной информации см. "Совместимые размеры массивов для основных операций". fun должен поддержать скалярное расширение, такое что, если A или B являются скаляром, то C является результатом применения скаляра к каждому элементу в другом входном массиве.

В MATLAB® R2016b и позже, встроенные двоичные функции, перечисленные в этой таблице независимо, поддерживают неявное расширение. С этими функциями можно вызвать функцию или оператор непосредственно вместо того, чтобы использовать bsxfun. Например, можно заменить C = bsxfun(@plus,A,B) на A+B.

ФункцияСимволОписание
плюс

+

Плюс

минус,

-

Минус,

\times

.*

Массив умножается

rdivide./

./

Правый массив делится

ldivide.\

.\

Левый массив делится

power

.^

Степень массивов

eq

==

Равный

ne

~=

Не равный

&gt

>

Больше, чем

ge

>=

Больше, чем или равный

&lt

<

Меньше, чем

le

<=

Меньше чем или равный

and

&

Поэлементный логический AND

or

|

Поэлементный логический OR

xor

Нет данных

Логическое исключающее ИЛИ

max

Нет данных

Бинарный максимум

min

Нет данных

Бинарный минимум

mod

Нет данных

Модуль после деления

rem

Нет данных

Остаток после деления

atan2

Нет данных

Обратный тангенс с четырьмя квадрантами; приведите к радианам

atan2d

Нет данных

Обратный тангенс с четырьмя квадрантами; закончитесь в градусах

hypot

Нет данных

Квадратный корень из суммы квадратов

Пример: C = bsxfun (@plus, [1 2], [2; 3])

Типы данных: function_handle

Входные массивы, заданные как скаляры, векторы, матрицы или многомерные массивы. Вводы A и B должны иметь совместимые размеры. Для получения дополнительной информации см. "Совместимые размеры массивов для основных операций". Каждый раз, когда размерность A или B является одиночным элементом (равный одному), bsxfun фактически реплицирует массив по тому измерению, чтобы совпадать с другим массивом. В случае, где размерность A или B является одиночным элементом, и соответствующая размерность в другом массиве является нулем, bsxfun фактически уменьшает одноэлементную размерность, чтобы обнулить.

Типы данных: единственный | удваиваются | uint8 | uint16 | uint32 | uint64 | int8 | int16 | int32 | int64 | char | логический
Поддержка комплексного числа: Да

Расширенные возможности

Представленный в R2007a

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