0

MATLABでいくつかの浮動小数点テストベクトルを含むファイルを解析しようとしています。

ファイルの一部は次のとおりです。

b32+    +1.7FFFFFP127   -1.7FFFFFP127   +0.0P0  
b32+    +1.000000P0 -1.6D0976P9 -1.6CC976P9 
b32+    +1.000000P-126  -1.000000P-126  +0.0P0  
b32+    -1.7FFFFFP127   +1.7FFFFFP127   +0.0P0  
b32-    -1.7FFFFFP127   -1.7FFFFFP127   +0.0P0  
b32-    +1.000000P0 -1.000000P0 +1.000000P1 
b32-    -1.7C3AB6P14    +1.000000P0 -1.7C3CB6P14    
b32-    +1.2F0948P14    +1.000000P0 +1.2F0748P14    
b32-    -1.000000P-126  +1.000000P-126  -1.000000P-125  
b32-    +1.000000P-126  +1.000000P-126  +0.0P0  
b32-    -1.000000P-126  +1.0410ADP-103  -1.0410AEP-103  
b32-    +1.7FFFFFP127   +1.7FFFFFP127   +0.0P0  
b32*    +1.12D2C6P92    -1.000000P0 -1.12D2C6P92    
b32*    +1.7FFFFFP127   -1.000000P0 -1.7FFFFFP127   
b32*    -1.7FFFFFP127   +1.000000P0 -1.7FFFFFP127   
b32*    -1.5FEA32P-51   +1.000000P0 -1.5FEA32P-51   
b32*    -1.000000P-126  +1.000000P0 -1.000000P-126  
b32*    -1.000000P0 +1.000000P0 -1.000000P0 
b32*    +1.000000P0 +1.000000P0 +1.000000P0 
b32*    +1.000000P-126  +1.000000P0 +1.000000P-126  
b32*    +1.000000P-126  +1.7FFFFFP127   +1.7FFFFFP1 

データ型が混在しているため、基本的にこのファイルの解析方法がわかりません。

このファイルには、3つの可能な浮動小数点演算が示されています(加算:b32 +、減算:b32-、および乗算:b32 *)。最初の2つの数値はオペランドであり、最後の数値は結果です。

後で数値を32ビット浮動小数点形式でフォーマットしたいと思います(おそらく理解できます)。問題は、「b32 +」のようなものを取得し、それらを標準の浮動小数点形式に変換するために数値を変数に変換する方法がわからないことです。

符号(+/-)を見て、それに基づいて符号ビットを設定する数値のアルゴリズムを実装する予定です。'。'の間の16進数を調べます。そして「P」とそれを仮数として設定します。次に、Pの後の数値を不偏指数とします。次に、他の番号についてもこの手順を繰り返す予定です。

ありがとうございました!

4

1 に答える 1

0

これは実際に私が探していたものでした:

c = sscanf(line,'b32%c %c%c.%xP%d %c%c.%xP%d %c%c.%xP%d',[1,inf]);
于 2013-02-23T22:27:03.817 に答える