bsxfun

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

Синтаксис

Описание

пример

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

Создайте указатель на функцию, который представляет функцию f(a,b)=a-eb.

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

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

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

+

Плюс

minus

-

Минус,

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 фактически уменьшает одноэлементную размерность, чтобы обнулить.

Типы данных: single | double | uint8 | uint16 | uint32 | uint64 | int8 | int16 | int32 | int64 | char | logical
Поддержка комплексного числа: Да

Советы

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

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