回 帖 发 新 帖 刷新版面

主题:num2bin 出现的问题,出现nan值,为什么

bb='111111111111001010001110101101110011111000110111001011100101101';
q=quantizer('double','ceil','saturate',[64 11]);
cc=bin2num(q,bb);
结果是:
cc=NaN  请为我解答啊 这是为什么呢? 感谢帮助的人

回复列表 (共4个回复)

沙发

bin2num为什么出现nan值啊

板凳

答案为方法三。
quantizer的用法,请看帮助:

其用法:(1)
pn = {'mode',  'roundmode', 'overflowmode', 'format'}; 
pv = {'fixed', 'ceil', 'saturate', [64 11]}; 
q = quantizer(pn, pv) 

(2)
q = quantizer('fixed', 'ceil', 'saturate', [64 11])
或者:
(3)将你的修改后:(你给的二进制数有点古怪)
bb='111111111111001010001110101101110011111000110111001011100101101';
pn = {'mode',  'roundmode', 'overflowmode', 'format'}; 
pv = {'fixed', 'ceil', 'saturate', [64 11]}; 
q = quantizer(pn, pv) 

%q=quantizer('double','ceil','saturate',[64 11]); %%不要随意更改quantizer的参数
%q=quantizer('fixed','ceil','saturate',[64 11]);
cc=bin2num(q,bb)

3 楼

谢谢楼上兄弟的讲解,我照着你说的做了,但是不行,虽然能出来个数不是NaN的,但问题仍然存在。就是我用num2bin(q,cc)的时候,不能返回原来的二进制数,我这是用在加密里面的,需要能转来转去。所以请高手再帮帮解答下。 如:bb='111111111111001010001110101101110011111000110111001011100101101';
pn = {'mode',  'roundmode', 'overflowmode', 'format'}; 
pv = {'fixed', 'ceil', 'saturate', [64 11]}; 
q = quantizer(pn, pv);

%q=quantizer('double','ceil','saturate',[64 11]); %%不要随意更改quantizer的参数
%q=quantizer('fixed','ceil','saturate',[64 11]);
cc=bin2num(q,bb)   %cc的结果是: 4.5027e+015

dd=num2bin(q,cc)   %dd的结果却是:0111111111111001010001110101101110011111000110111001100000000000
就是最后几位不对。 请为我想想解决办法啊。感谢了。

4 楼

各位高手,帮我分析分析吧,急用了,反正用bin2num的时候就是在64位二进制bb='111111111111001010001110101101110011111000110111001011100101101';只要第2到第12位都是1的时候就会出现NAN 其他的时候都能正确,而且bin2num和num2bin都能互相转换,实在不知道怎么修改好。quantizer参数换了很多种都不行,不是出现NAN就是bin2num和num2bin不能互相转换。请帮帮我吧。提前谢谢各路高人了! 不胜感激!

我来回复

您尚未登录,请登录后再回复。点此登录或注册