2011-12-20 18 views

答えて

4

Matlabでは、Java JDK関数を使用できます。

かもしれないバイナリ文字列表現にMATLABでフロート(単精度の32ビット数)に変換するための短い答え:

flt=3.14 
import java.lang.Integer java.lang.Float; 
Integer.toBinaryString(Float.floatToIntBits(flt)) 

長い答え:フロートの変換(単精度32ビット数)

function out=binstring2float(binstr) 
    % converts a binary string to float number according to IEEE754 
    % 
    % Usage: 
    % binstring2float('11000000010010001111010111000011') 
    % -3.14 
    % 
    % 
    % http://www.h-schmidt.net/FloatApplet/IEEE754.html 
    % 
    % Limitations: 
    % Rounding errors: Not every decimal number can be expressed exactly as a floating 
    % point number. This can be seen when entering "0.1" and examining its binary representation which is either slightly smaller or larger, depending on the last bit. 
    % 
    % Andrej Mosat, [email protected] 
    % 03/2012 
    % v0.0 
    % License: GNU GPL 
    % 
    % See also: FLOAT2BINSTRING 

    import java.lang.Long java.lang.Float; 

    if isequal(class(binstr), 'java.lang.String') 
      binstr=char(binstr); 
    end 

    if (~isstr(binstr)) 
     error('input must be a binary string');            
    end 
    % Error handling for binary strings should be added here 

    % the sign is negative 

    if binstr(2)=='1' 
     binstr(2)=''; 
     isnegative=1; 
    else 
     isnegative=0; 
    end 

    out=Float.intBitsToFloat(Long.parseLong( binstr , 2)); 
    if isnegative 
    out=-out; 
    end 

end 
:MATLABでバイナリ文字列表現

function out=float2binstring(flt) 
% converts a float number to binary in matlab according to IEEE754 
% 
% Usage: 
% float2binstring(-3.14) 
% 
% http://www.h-schmidt.net/FloatApplet/IEEE754.html 
% 
% Limitations: 
% Rounding errors: Not every decimal number can be expressed exactly as a  floating 
% point number. This can be seen when entering "0.1" and examining its binary  representation which is either slightly smaller or larger, depending on the last bit. 
% 
% Andrej Mosat, [email protected] 
% 03/2012 
% v0.0 
% License: GNU GPL 
% 
% See also: BINSTRING2FLOAT 


% this is a trick to use java JDK should be installed, tested on Matlab R2010 
import java.lang.Integer java.lang.Float; 

if (~isnumeric(flt)) 
    error('input must be a number'); 
end 

out=Integer.toBinaryString(Float.floatToIntBits(flt)); 
end 

と少しのオーバーヘッドでfloatへのバイナリ文字列に変換します

+0

ネイティブのMATLABコードはどうですか? – Royi

2

あなたは16進文字列に浮動小数点に変換するnum2hexを使用することができますように見えます。

+0

'format hex 'を使って表示方法を変更することもできます。 –

関連する問題