# Method ofBlocks

#### static member ofBlocks: BlockTensor<'T> -> Tensor<'T>

Builds a tensor out of tensor blocks.

##### Declaration

`static member ofBlocks: bs:BlockTensor<'T> -> Tensor<'T>`

##### Parameters

Type | Name | Description |
---|---|---|

BlockTensor<'T> | bs | The block tensor specification. |

##### Returns

Type | Description |
---|---|

Tensor<'T> | The resulting tensor. |

##### Remarks

The contents of a sub-block are jointed along the dimension determined by its nesting level, i.e.
a sub-block nested `n`

levels within other sub-blocks will be concatenated along dimension `n`

.

The contents of a sub-block must have equal sizes in all dimensions except for the concatenation dimensions.

##### Examples

```
// Consider a block matrix of the follow structure.
// +-----------------------------+---------------+
// | | |
// | | |
// | b1 | b2 |
// | (5 x 28) | (5 x 15) |
// | | |
// +---------------------+-------+-------+-------+
// | | | |
// | b3 | b4 | b5 |
// | (3 x 22) | (3 x 14) |(3 x 7)|
// +---------------------+---------------+-------+
//
// It can be specified as follows.
let b1 = HostTensor.zeros [5L; 28L]
let b2 = HostTensor.zeros [5L; 15L]
let b3 = HostTensor.zeros [3L; 22L]
let b4 = HostTensor.zeros [3L; 14L]
let b5 = HostTensor.zeros [3L; 7L]
let r1 = SubBlocks [Block b1; Block b2]
let r2 = SubBlocks [Block b3; Block b4; Block b5]
let a = Tensor.ofBlocks (SubBlocks [r1; r2])
// a.Shape = [8L; 43L]
```

##### See Also

#### static member ofBlocks: Tensor<'T> list -> Tensor<'T>

Builds a vector out of vectors blocks.

##### Declaration

`static member ofBlocks: bs:Tensor<'T> list -> Tensor<'T>`

##### Parameters

Type | Name | Description |
---|---|---|

Tensor<'T> list | bs | The block vector specification. |

##### Returns

Type | Description |
---|---|

Tensor<'T> | The resulting vector. |

##### Remarks

The contents of a the vectors are concatenated.

##### Examples

```
// Consider a block vector of the follow structure.
// +-----------------------------+---------------+
// | b1 (28) | b2 (15) |
// +-----------------------------+---------------+
//
// It can be specified as follows.
let b1 = HostTensor.zeros [28L]
let b2 = HostTensor.zeros [15L]
let a = Tensor.ofBlocks [b1; b2]
// a.Shape = [43L]
```

#### static member ofBlocks: Tensor<'T> list list -> Tensor<'T>

Builds a matrix out of matrix blocks.

##### Declaration

`static member ofBlocks: bs:Tensor<'T> list list -> Tensor<'T>`

##### Parameters

Type | Name | Description |
---|---|---|

Tensor<'T> list list | bs | The matrix blocks. |

##### Returns

Type | Description |
---|---|

Tensor<'T> | The resulting matrix. |

##### Remarks

The contents of each list are jointed along the dimension determined by its nesting level, i.e. the elements of the outer lists are concatenated along dimension zero (rows) and the elements of the inner lists are concatenated along dimension one (columns).

The contents of a list must have equal sizes in all dimensions except for the concatenation dimensions.

##### Examples

```
// Consider a block matrix of the follow structure.
// +-----------------------------+---------------+
// | | |
// | | |
// | b1 | b2 |
// | (5 x 28) | (5 x 15) |
// | | |
// +---------------------+-------+-------+-------+
// | | | |
// | b3 | b4 | b5 |
// | (3 x 22) | (3 x 14) |(3 x 7)|
// +---------------------+---------------+-------+
//
// It can be specified as follows.
let b1 = HostTensor.zeros [5L; 28L]
let b2 = HostTensor.zeros [5L; 15L]
let b3 = HostTensor.zeros [3L; 22L]
let b4 = HostTensor.zeros [3L; 14L]
let b5 = HostTensor.zeros [3L; 7L]
let bs = [[b1; b2 ]
[b3; b4; b5]]
let a = Tensor.ofBlocks bs
// a.Shape = [8L; 43L]
```

#### static member ofBlocks: Tensor<'T> list list list -> Tensor<'T>

Builds a three dimensional tensor out of tensor blocks.

##### Declaration

`static member ofBlocks: bs:Tensor<'T> list list list -> Tensor<'T>`

##### Parameters

Type | Name | Description |
---|---|---|

Tensor<'T> list list list | bs | The tensor blocks. |

##### Returns

Type | Description |
---|---|

Tensor<'T> | The resulting tensor. |

##### Remarks

The contents of each list are jointed along the dimension determined by its nesting level, i.e. the elements of the outer-most lists are concatenated along dimension zero and the elements of the middle lists are concatenated along dimension one and the elements of the inner-most lists are concatenated along dimension two.

The contents of a list must have equal sizes in all dimensions except for the concatenation dimensions.