Documentation

This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English verison of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

bsxfun

Binary singleton expansion function for gpuArray

Syntax

C = bsxfun(FUN,A,B)

Description

bsxfun with gpuArray input is similar in behavior to the MATLAB® function bsxfun, except that the actual evaluation of the function, FUN, happens on the GPU, not on the CPU.

C = bsxfun(FUN,A,B) applies the element-by-element binary operation specified by the function handle FUN to arrays A and B, with singleton expansion enabled. If A or B is a gpuArray, bsxfun moves all other required data to the GPU and performs its calculation on the GPU. The output array C is a gpuArray, which you can copy to the MATLAB workspace with gather.

For more detailed information, see Run Element-wise MATLAB Code on GPU. For the subset of the MATLAB language that is currently supported by bsxfun on the GPU, see Supported MATLAB Code.

The corresponding dimensions of A and B must be equal to each other, or equal to one. Whenever a dimension of A or B is singleton (equal to 1), bsxfun virtually replicates the array along that dimension to match the other array. In the case where a dimension of A or B is singleton and the corresponding dimension in the other array is zero, bsxfun virtually diminishes the singleton dimension to 0.

The size of the output array C is such that each dimension is the larger of the two input arrays in that dimension for nonzero size, or zero otherwise. Notice in the following code how dimensions of size 1 are scaled up or down to match the size of the corresponding dimension in the other argument:

R1 = rand(2,5,4,'gpuArray');
R2 = rand(2,1,4,3,'gpuArray');
R = bsxfun(@plus,R1,R2);
size(R)
  2     5     4     3
R1 = rand(2,2,0,4,'gpuArray');
R2 = rand(2,1,1,4,'gpuArray');
R = bsxfun(@plus,R1,R2);
size(R)
  2     2     0     4

Examples

Subtract the mean of each column from all elements in that column:

A = rand(8,'gpuArray');
M = bsxfun(@minus,A,mean(A));
Was this topic helpful?