3

dec2bin論理変数ベクトルを返すように、Matlab で変数を取得する簡単な方法を探しています。たとえば、数値が与えられた場合n=8、出力は [1,0,0,0] になります。どうやってやるの?

4

3 に答える 3

8

最も簡単な方法は、返されたバイナリ表現を単純に分解することですdec2bin(これはすでに文字列です!):

dec2bin(n) == '1'

これはn = 8、論理ベクトルを返します

1     0     0     0

これnは、 が数値のベクトルの場合にも機能します。

于 2013-05-09T19:59:18.107 に答える
3

文字列 '1' は char(49) で、文字列 '0' は char(48) であるため、次を使用できます。

bin = dec2bin(dec) - 48;

配列に対して算術演算を実行しているため、結果は double の配列として出力されます («dec2bin» からの文字列は、Matlab では配列と見なされます)。

非常に大きい整数をバイナリに変換する場合は、次のコードを使用することをお勧めします。

bin = mod(floor(dec.*2.^-(floor(log2(dec)):-1:0)),2);

バイナリ ベクトルを 10 進数に変換するには:

dec = sum(bin.*2.^((length(bin)-1):-1:0));
于 2015-07-22T16:00:18.067 に答える
1

を使用しないでください。代わりdec2binに使用してください:bitget

bitget(n, fix(log2(n)) + 1:-1:1)

PS: 数値の配列があり、そのバイナリ表現をビットのマトリックスとして使用したい場合は、この関連する質問をご覧になることをお勧めします。

n = 8
b = bitget(n, fix(log2(n)) + 1:-1:1)

これにより、次の結果が得られます。

b =
     1     0     0     0
于 2013-05-09T20:00:08.730 に答える