## how to creating matrix h 4x2 with some rules

on 21 Mar 2013

### the cyclist (view profile)

I have some trouble when creating matrix 4x2 with rules like below. the first column are integer and the other column are random number. I already create the syntax below.

```for ii = 1:8,
nilai = mod(ii,2);
if  nilai == 0
x(ii) = 0.95 + (1.05-0.95)*x(ii);
elseif nilai ~= 0
x(ii) = round(3 + (30-3)*x(ii));
elseif nilai ~= 0
x(ii) = 0.01 + (0.055-0.01)*x(ii);
else
x(ii) = 1.0 + (1.15-1.0)*x(ii);
end
end
x = reshape(x,4,2)';
```

but the result are

```??? Error using ==> reshape
To RESHAPE the number of elements must not change.
```

anyone can help me with this problem..? any solutions are very welcome..

thank you.

## Products

No products are associated with this question.

### the cyclist (view profile)

on 21 Mar 2013

What is the shape of x before you start? It seems that it is probably not an 8-element array, so the reshape fails.

Noru

### Noru (view profile)

on 21 Mar 2013

the shape of x that i want to create is an 8 element array, then i want to reshape those 8 element array become 4x2 matrix with integer number in the first column, but i have some problem when define loop (for)

the cyclist

### the cyclist (view profile)

on 21 Mar 2013

You did not answer my question. What is the shape of x BEFORE this loop?

As you can see from Image Analyst's answer, there is no problem if x is 1x8 before your loop.

Noru

### Noru (view profile)

on 27 Mar 2013

i think i ask the wrong question..

### Image Analyst (view profile)

on 21 Mar 2013

I got a different error message due to x not being predefined and your new x(ii) depends on your old x(ii). When I predefined x, it ran with no errors:

```x = zeros(1, 8);
for ii = 1:8
nilai = mod(ii,2);
if  nilai == 0
x(ii) = 0.95 + (1.05-0.95)*x(ii);
elseif nilai ~= 0
x(ii) = round(3 + (30-3)*x(ii));
elseif nilai ~= 0
x(ii) = 0.01 + (0.055-0.01)*x(ii);
else
x(ii) = 1.0 + (1.15-1.0)*x(ii);
end
end
x = reshape(x,4,2)'
```

In the command window:

```x =
3     0.95    3    0.95
3     0.95    3    0.95
```

Noru

### Noru (view profile)

on 21 Mar 2013

now i already done create a matrix like you do, but i want to make the value of the 3rd column like 2nd and 4th(non integer number) like below

```x =
8      0.67    0.32    0.76
14     0.49    0.21    0.53
```

do you have any solution..?

Image Analyst

### Image Analyst (view profile)

on 21 Mar 2013
```% make the value of the 3rd column like 2nd
x(:,3) = x(:,2);
% make the value of the 3rd column like 4th
x(:,3) = x(:,4);
```

#### Join the 15-year community celebration.

Play games and win prizes!

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi