複数の10進数の値をndec2binで2進数に変換したいです。
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Yuya Oki
am 24 Aug. 2021
Kommentiert: Yuya Oki
am 25 Aug. 2021
複数の10進数の値をndec2binで2進数に変換したいです。
ex)a = [1 2 3]'
ndec2bin(a,3);
上のコードを試したのですがPlease specify x in the range[-2^(n-1) 2^(n-1)-1].というエラーがでてうまくできませんでした。ndec2binの関数の数値xには変数をいれられないということなのでしょうか?
0 Kommentare
Akzeptierte Antwort
Shunichi Kusano
am 24 Aug. 2021
dec2binでいけるみたいです。
a = [1 2 3]';
dec2bin(a,3)
4 Kommentare
Atsushi Ueno
am 24 Aug. 2021
横やり失礼致します。興味を持って拝見させて頂きました。コメントさせていただきます。
【結論】
こちらのnbec2binは、R2019b以前のdec2binでは出来ない「負の数値の変換」をカバーしていますが、同時にdec2binの持つ「配列の変換」を無効にしてしまっているので、それをカバーしたのが@Shunichi Kusanoさんのnbec2bin_arrayです。

【詳細】
a = [1 2 3]';
ndec2bin(a,3);
>上のコードを試したのですがPlease specify x in the range[-2^(n-1) 2^(n-1)-1].というエラーがでてうまくできませんでした。→上記エラーは再現しませんでした。下に当該エラーを出すコードを抜粋します。
function [binstring]=ndec2bin(x,n)
if x>2^(n-1)-1 || x<-2^(n-1)
error('Please specify x in the range[-2^(n-1) 2^(n-1)-1].')
end % これより先は省略
上記判定は即ち「n-1桁の2進数※で表現できる範囲外の値」なら"Please specify..."とエラーを表示する意味ですが、a = [1 2 3]は正負共に2桁で表現できる範囲に入っていますから当該エラーは出ないはずです。(※なぜ範囲チェックの仕様が「n-1桁…」なのかは謎です。本来は「n桁…」にすべきだと思います。)
|| と && の演算のオペランドは、論理スカラー値に変換可能でなければなりません。
エラー: ndec2bin (line 7)
if x>2^(n-1)-1 || x<-2^(n-1)
>ndec2binの関数の数値xには変数をいれられないということなのでしょうか?
変数はいれられます。いれられないのは配列です。
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Resizing and Reshaping Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!