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

N/A

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

bitand

N/A

Побитовое И

bitor

N/A

Побитовое ИЛИ

bitxor

N/A

Побитовое исключающее ИЛИ

max

N/A

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

min

N/A

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

mod

N/A

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

rem

N/A

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

atan2

N/A

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

atan2d

N/A

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

hypot

N/A

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

Пример: 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
Для просмотра документации необходимо авторизоваться на сайте