I have one column vector and one row vector.

```
a = [1;2;3]
b = [10 20 30 40 50 60 70 80 90]

```

I hope to chop `b` into `[10 20 30]`, `[40 50 60]`, `[70 80 90]` and create a cell array C
such that 

```
C{1} = a*[10 20 30]
C{2} = a*[40 50 60]
C{3} = a*[70 80 90]

```

without for loop. How does that become possible in MATLAB?

I also hope to have 

```
a = [1;2;3]
b = [10 20 30 40 50 60 70 80 90 100 110 120]

```

such that 

```
C{1} = a*[10 20 30]
C{2} = a*[40 50 60]
C{3} = a*[70 80 90]
C{4} = a*[100 110 120]

```

P.S. If this is not possible, how to create a 3 dimension array D such that

```
D(:,:,1) = a*[10 20 30]
D(:,:,2) = a*[40 50 60]
D(:,:,3) = a*[70 80 90]

```

without for loop?

I also hope to have 

```
a = [1;2;3]
b = [10 20 30 40 50 60 70 80 90 100 110 120]

```

such that 

```
D(:,:,1) = a*[10 20 30]
D(:,:,2) = a*[40 50 60]
D(:,:,3) = a*[70 80 90]
D(:,:,4) = a*[100 110 120]

```