複数の10進数の値をndec2binで2進数に変換したいです。
3 次查看(过去 30 天)
显示 更早的评论
複数の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 个评论
采纳的回答
Shunichi Kusano
2021-8-24
dec2binでいけるみたいです。
a = [1 2 3]';
dec2bin(a,3)
4 个评论
Atsushi Ueno
2021-8-24
横やり失礼致します。興味を持って拝見させて頂きました。コメントさせていただきます。
【結論】
こちらの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には変数をいれられないということなのでしょうか?
変数はいれられます。いれられないのは配列です。
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!