2つの値の違いがわからない

2 ビュー (過去 30 日間)
yuta
yuta 2022 年 7 月 5 日
コメント済み: yuta 2022 年 7 月 9 日
Aとstartの中身が私には同じに見えますが、同様の処理をしても結果が異なります。
なぜこのような違いが生じるのかご教示いただければ幸いです。
load('A.mat')
A
A = 1×10
7.8200 7.0230 8.0540 7.8640 7.6350 7.3300 7.6600 7.8630 7.9130 9.0220
load('start.mat')
start
start = 1×10
7.8200 7.0230 8.0540 7.8640 7.6350 7.3300 7.6600 7.8630 7.9130 9.0220
load('B.mat')
C = find(B == A(1));
C
C = 7820
D = find(B == start(1));
D
D = 1×0 empty double row vector

採用された回答

Kojiro Saito
Kojiro Saito 2022 年 7 月 5 日
出力の表示形式で値が丸め込まれて見えているのが原因です。
こちらのドキュメントに詳細がありますが、MATLABではデフォルトでshortの表示形式なので、小数点以下が4桁の固定小数点形式で表示されます。
実はA(1)とstart(1)では同じ値になっていません(A(1) == start(1)がfalseの0になります)。
load('A.mat')
A(1)
ans = 7.8200
load('start.mat')
start(1)
ans = 7.8200
A(1) == start(1)
ans = logical
0
桁数を増やして表示すると、A(1)とstart(1)で値が違っているのが確認できます。
format long
A(1)
ans =
7.820000000000000
start(1)
ans =
7.819999999999999
  6 件のコメント
yuta
yuta 2022 年 7 月 9 日
時間軸もroundで丸めこんでしまえばいいんですね!ありがとうございます。

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

その他の回答 (0 件)

カテゴリ

Find more on Logical in Help Center and File Exchange

製品


リリース

R2022a

Community Treasure Hunt

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

Start Hunting!