2012-03-24 16 views
0

私はバイナリ行ベクトルを持っています。Matlabのバイナリ行ベクトルを通常の行ベクトルに変換するには?

B = DEC2BIN(15)

Iが '正常な' ベクトルで成分ごとに乗算しようとすると、このベクターはひどく振る舞います。 bを法線ベクトルに変換するにはどうすればよいですか?

D = [1 2 3 4]

場合

bは私は

N = Dをしたい。*具体的には

私に[1 2 3 4]を与えるが、代わりに[49 98 147 196]を与える。

おかげ

答えて

0

問題は、dec2binが文字列を返します。数値ベクトルではありません。あなたは、数値配列にchar型の配列を変換する必要があり、あなたはこのように、そのarrayfunで行うことができます:あなたは、通信システムツールボックスを使用している場合

b = dec2bin(15); 
b_numeric = arrayfun(@(x) str2num(x), b); 
n = d.*b_numeric; 

は、すでにまさにその機能を持っています、 de2bin

2

あなたが持っている問題は、dec2binは文字の配列を返すことです。あなたの配列で要素毎の乗算を実行するとdあなたは文字のASCIIコードでd要素毎の乗算の結果を得る「1」、あなたは配列によってdを掛けたい場合は49

あります[1 1 1 1]これは複雑なアプローチのようです。では、本当に何をしようとしていますか?

文字(配列)を数値に変換するには、str2num関数を使用します。ここでは、文字列 '1111'を番号1111に変換するので、str2num(dec2bin(15))1111を返します。

5

str2numは動作しますが、各セル内に1つだけの数字を保証しているので、あなたは試すことができますはるかに高速である必要があり

b = dec2bin(15) - 48; 

注:48は、文字「0」のASCIIコードです。

+0

私の苦労よりも良い答えです。私はまだベクトルに1を掛ける奇妙な方法だと思っています。 –

+0

@HighPerformanceMark:私は、「b」は可変であり、必ずしも[1 1 1 1]ではないと推測していると思います。 –

+0

あなたが正しいと思います。 –

関連する問題