txtファイルから符​号付固定小数点の16​進数を読み込み、fi​オブジェクトを作る方​法を教えてください。

1 回表示 (過去 30 日間)
K_S_
K_S_ 2022 年 7 月 22 日
コメント済み: K_S_ 2022 年 7 月 25 日
下記のコードで作成される d.txt を読み込み、
元の符号付固定小数点の16進数のfiオブジェクト a_fiと同じ設定のfiオブジェクトを作成するにはどうしたらよいでしょうか。
(d.txtは、実際は外部で取得することを想定しています)
a = randn(1,10);
T = numerictype(true,64,60);
F = fimath('OverflowMode', 'saturate',...
'RoundMode', 'round',...
'SumMode', 'FullPrecision',...
'ProductMode', 'FullPrecision',...
'MaxProductWordLength', 256,...
'MaxSumWordLength', 256);
a_fi = fi(a,T,F);
b_fi = hex(a_fi);
c = strsplit(b_fi)';
writecell(c,"d.txt", QuoteStrings="none");

採用された回答

Atsushi Ueno
Atsushi Ueno 2022 年 7 月 22 日
a = randn(1,10);
T = numerictype(true,12,10);
F = fimath('OverflowMode', 'saturate',...
'RoundMode', 'round',...
'SumMode', 'FullPrecision',...
'ProductMode', 'FullPrecision',...
'MaxProductWordLength', 256,...
'MaxSumWordLength', 256);
a_fi = fi(a,T,F);
b_fi = hex(a_fi) % a_fi の値 (16進数で表示)
b_fi = 'e61 ca1 a3b 7ff 047 800 193 472 d97 f97'
c = strsplit(b_fi)';
writecell(c,"d.txt", QuoteStrings="none");
d = regexprep(fileread('d.txt'),'\n',' ') % 下記のコードで作成される d.txt を読み込み
d = 'e61 ca1 a3b 7ff 047 800 193 472 d97 f97 '
d_fi = fi(0,T,F); % 元の符号付固定小数点の16進数のfiオブジェクト a_fi と同じ設定の fi オブジェクトを作成
d_fi.hex = d; % d.txt の内容を16進数として d_fi に設定
a_fi == d_fi % d_fi が a_fi と同じ値か確認
ans = 1×10 logical array
1 1 1 1 1 1 1 1 1 1
  1 件のコメント
K_S_
K_S_ 2022 年 7 月 25 日
ありがとうございました。無事できました。

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File Exchange記述統計 についてさらに検索

タグ

製品


リリース

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!