私はバイナリ行ベクトルを持っています。Matlabのバイナリ行ベクトルを通常の行ベクトルに変換するには?
B = DEC2BIN(15)
Iが '正常な' ベクトルで成分ごとに乗算しようとすると、このベクターはひどく振る舞います。 bを法線ベクトルに変換するにはどうすればよいですか?
D = [1 2 3 4]
場合
bは私は
N = Dをしたい。*具体的には
私に[1 2 3 4]を与えるが、代わりに[49 98 147 196]を与える。
おかげ
私はバイナリ行ベクトルを持っています。Matlabのバイナリ行ベクトルを通常の行ベクトルに変換するには?
B = DEC2BIN(15)
Iが '正常な' ベクトルで成分ごとに乗算しようとすると、このベクターはひどく振る舞います。 bを法線ベクトルに変換するにはどうすればよいですか?
D = [1 2 3 4]
場合
bは私は
N = Dをしたい。*具体的には
私に[1 2 3 4]を与えるが、代わりに[49 98 147 196]を与える。
おかげ
問題は、dec2binが文字列を返します。数値ベクトルではありません。あなたは、数値配列にchar型の配列を変換する必要があり、あなたはこのように、そのarrayfunで行うことができます:あなたは、通信システムツールボックスを使用している場合
b = dec2bin(15);
b_numeric = arrayfun(@(x) str2num(x), b);
n = d.*b_numeric;
は、すでにまさにその機能を持っています、 de2bin
あなたが持っている問題は、dec2bin
は文字の配列を返すことです。あなたの配列で要素毎の乗算を実行するとd
あなたは文字のASCIIコードでd
要素毎の乗算の結果を得る「1」、あなたは配列によってd
を掛けたい場合は49
あります[1 1 1 1]
これは複雑なアプローチのようです。では、本当に何をしようとしていますか?
文字(配列)を数値に変換するには、str2num
関数を使用します。ここでは、文字列 '1111'を番号1111に変換するので、str2num(dec2bin(15))
は1111
を返します。
str2num
は動作しますが、各セル内に1つだけの数字を保証しているので、あなたは試すことができますはるかに高速である必要があり
b = dec2bin(15) - 48;
。
注:48は、文字「0」のASCIIコードです。
私の苦労よりも良い答えです。私はまだベクトルに1を掛ける奇妙な方法だと思っています。 –
@HighPerformanceMark:私は、「b」は可変であり、必ずしも[1 1 1 1]ではないと推測していると思います。 –
あなたが正しいと思います。 –