# times, .*

Multiplication

## Syntax

## Description

`C = `

multiplies arrays `A`

.*`B`

`A`

and `B`

by multiplying
corresponding elements. The sizes of `A`

and
`B`

must be the same or be compatible.

If the sizes of `A`

and `B`

are compatible,
then the two arrays implicitly expand to match each other. For example, if one
of `A`

or `B`

is a scalar, then the scalar is
combined with each element of the other array. Also, vectors with different
orientations (one row vector and one column vector) implicitly expand to form a
matrix.

## Examples

### Multiply Two Vectors

Create two vectors, `A`

and `B`

, and multiply them element by element.

A = [1 0 3]; B = [2 3 7]; C = A.*B

`C = `*1×3*
2 0 21

### Multiply Two Arrays

Create two 3-by-3 arrays, `A`

and `B`

, and multiply them element by element.

A = [1 0 3; 5 3 8; 2 4 6]; B = [2 3 7; 9 1 5; 8 8 3]; C = A.*B

`C = `*3×3*
2 0 21
45 3 40
16 32 18

### Multiply Row and Column Vectors

Create a row vector `a`

and a column vector `b`

, then multiply them. The 1-by-3 row vector and 4-by-1 column vector combine to produce a 4-by-3 matrix.

a = 1:3; b = (1:4)'; a.*b

`ans = `*4×3*
1 2 3
2 4 6
3 6 9
4 8 12

The result is a 4-by-3 matrix, where each (i,j) element in the matrix is equal to `a(j).*b(i)`

:

$$\mathit{a}=\left[\begin{array}{ccc}{\mathit{a}}_{1}& {\mathit{a}}_{2}& {\mathit{a}}_{3}\end{array}\right],\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\mathit{b}=\left[\begin{array}{c}{\mathit{b}}_{1}\\ {\mathit{b}}_{2}\\ {\mathit{b}}_{3}\\ {\mathit{b}}_{4}\end{array}\right],\text{\hspace{0.17em}\hspace{0.17em}\hspace{0.17em}\hspace{0.17em}\hspace{0.17em}\hspace{0.17em}\hspace{0.17em}\hspace{0.17em}\hspace{0.17em}\hspace{0.17em}}\text{\hspace{0.17em}}\mathit{a}\text{\hspace{0.17em}}.*\text{\hspace{0.17em}}\mathit{b}=\left[\begin{array}{ccc}{\mathit{a}}_{1}{\mathit{b}}_{1}& {\mathit{a}}_{2}{\mathit{b}}_{1}& {\mathit{a}}_{3}{\mathit{b}}_{1}\\ {\mathit{a}}_{1}{\mathit{b}}_{2}& {\mathit{a}}_{2}{\mathit{b}}_{2}& {\mathit{a}}_{3}{\mathit{b}}_{2}\\ {\mathit{a}}_{1}{\mathit{b}}_{3}& {\mathit{a}}_{2}{\mathit{b}}_{3}& {\mathit{a}}_{3}{\mathit{b}}_{3}\\ {\mathit{a}}_{1}{\mathit{b}}_{4}& {\mathit{a}}_{2}{\mathit{b}}_{4}& {\mathit{a}}_{3}{\mathit{b}}_{4}\end{array}\right].$$

## Input Arguments

`A`

, `B`

— Operands

scalars | vectors | matrices | multidimensional arrays

Operands, specified as scalars, vectors, matrices, or multidimensional
arrays. Inputs `A`

and `B`

must either be
the same size or have sizes that are compatible (for example,
`A`

is an `M`

-by-`N`

matrix and `B`

is a scalar or
`1`

-by-`N`

row vector). For more
information, see Compatible Array Sizes for Basic Operations.

Operands with an integer data type cannot be complex.

**Data Types: **`single`

| `double`

| `int8`

| `int16`

| `int32`

| `int64`

| `uint8`

| `uint16`

| `uint32`

| `uint64`

| `logical`

| `char`

| `categorical`

| `duration`

| `calendarDuration`

**Complex Number Support: **Yes

## Extended Capabilities

### Tall Arrays

Calculate with arrays that have more rows than fit in memory.

This function fully supports tall arrays. For more information, see Tall Arrays.

### C/C++ Code Generation

Generate C and C++ code using MATLAB® Coder™.

Usage notes and limitations:

Multiplication of pure imaginary numbers by non-finite numbers might not match MATLAB

^{®}. The code generator does not specialize multiplication by pure imaginary numbers—it does not eliminate calculations with the zero real part. For example,`(Inf + 1i)*1i = (Inf*0 – 1*1) + (Inf*1 + 1*0)i = NaN + Infi`

.If you use

`times`

with single type and double type operands, the generated code might not produce the same result as MATLAB. See Binary Element-Wise Operations with Single and Double Operands (MATLAB Coder).

### GPU Code Generation

Generate CUDA® code for NVIDIA® GPUs using GPU Coder™.

Usage notes and limitations:

Multiplication of pure imaginary numbers by non-finite numbers might not match MATLAB. The code generator does not specialize multiplication by pure imaginary numbers—it does not eliminate calculations with the zero real part. For example,

`(Inf + 1i)*1i = (Inf*0 – 1*1) + (Inf*1 + 1*0)i = NaN + Infi`

.

### HDL Code Generation

Generate Verilog and VHDL code for FPGA and ASIC designs using HDL Coder™.

Inputs cannot be data type `logical`

.

### Thread-Based Environment

Run code in the background using MATLAB® `backgroundPool`

or accelerate code with Parallel Computing Toolbox™ `ThreadPool`

.

This function fully supports thread-based environments. For more information, see Run MATLAB Functions in Thread-Based Environment.

### GPU Arrays

Accelerate code by running on a graphics processing unit (GPU) using Parallel Computing Toolbox™.

Usage notes and limitations:

64-bit integers are not supported.

For more information, see Run MATLAB Functions on a GPU (Parallel Computing Toolbox).

### Distributed Arrays

Partition large arrays across the combined memory of your cluster using Parallel Computing Toolbox™.

This function fully supports distributed arrays. For more information, see Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox).

## Version History

**Introduced before R2006a**

### R2020b: Implicit expansion change affects `calendarDuration`

, `categorical`

, and `duration`

arrays

*Behavior changed in R2020b*

Starting in R2020b, `times`

supports implicit expansion
when the arguments are `calendarDuration`

,
`categorical`

, or `duration`

arrays. Between
R2020a and R2016b, implicit expansion was supported only for numeric data
types.

### R2016b: Implicit expansion change affects arguments for operators

*Behavior changed in R2016b*

Starting in R2016b with the addition of implicit expansion, some combinations of arguments for basic operations that previously returned errors now produce results. For example, you previously could not add a row and a column vector, but those operands are now valid for addition. In other words, an expression like `[1 2] + [1; 2]`

previously returned a size mismatch error, but now it executes.

If your code uses element-wise operators and relies on the errors that MATLAB previously returned for mismatched sizes, particularly within a `try`

/`catch`

block, then your code might no longer catch those errors.

For more information on the required input sizes for basic array operations, see Compatible Array Sizes for Basic Operations.

## Open Example

You have a modified version of this example. Do you want to open this example with your edits?

## MATLAB Command

You clicked a link that corresponds to this MATLAB command:

Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.

# Select a Web Site

Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .

You can also select a web site from the following list:

## How to Get Best Site Performance

Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.

### Americas

- América Latina (Español)
- Canada (English)
- United States (English)

### Europe

- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)

- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)