# Is there a way to get an 8 x 1 matrix instead of 8 x 3 using dec2bin or any other?

30 views (last 30 days)
sawasawa on 27 Feb 2021
Commented: Walter Roberson on 27 Feb 2021
dec2bin (2 ^ n-1: -1: 0) - '0'
##### 2 CommentsShowHide 1 older comment
sawasawa on 27 Feb 2021
This is what I get
n=3
b=dec2bin (2 ^ n-1: -1: 0) - '0'
ans =
1 1 1
1 1 0
1 0 1
1 0 0
0 1 1
0 1 0
0 0 1
0 0 0
But I want
111
110
101
100
011
010
001
000

Walter Roberson on 27 Feb 2021
string(dec2bin (2 ^ n-1: -1: 0))
This will be considered an array. The entries will be string objects such as "011". The entries will not be numeric.
Walter Roberson on 27 Feb 2021
Perhaps you want
n=3
n = 3
b = (dec2bin (2 ^ n-1: -1: 0) - '0')*10.^(n-1:-1:0).'
b = 8×1
111 110 101 100 11 10 1 0
Note that if you do this, then the only way to get the leading zeros is to format it as text again.

Jan on 27 Feb 2021
Edited: Jan on 27 Feb 2021
If you want 000 as output, remember, that this is not a valid decimal value. If you need the zeros for any reason, you have to stay at the char representation. Simply omit the -'0' part:
n = 3;
b = dec2bin(2 ^ n-1:-1:0)
The cannot be a 8x1 matrix.