Rounding after using dlmread: how to store exact values?

In some code, I am using the command "dlmread" to get data from ASCII files. To test it, I displayed the matrix of the stored data. When I did this, I found that the data was rounded off to four decimal places in the display? However, most of the data points have more than four decimal places, and I need those numbers.
Does "dlmread" actually round the values? Or is this just a result of displaying the matrix?

3 件のコメント

rkepp12
rkepp12 2016 年 6 月 26 日
Thank you everyone for your input! Here's an update:
After running my script and going into the actual files to confirm that it did what I want, I found that MATLAB has rounded off data points that were not used in the script.
For example, in the very first file, there is a data point that is originally 0.00100962, but after the script runs (even though this point isn't used in any calculations), the file says that the same value is now 0.0010096 (without the last two).
How can I stop MATLAB from doing this to values? It happens with almost every single data point, regardless of whether it is used in the script or not.
Stephen23
Stephen23 2016 年 6 月 26 日
編集済み: Stephen23 2016 年 6 月 26 日
"I found that MATLAB has rounded off..."
MATLAB does not secretly decide to round values that are stored in its memory. Some operation may be causing this "rounding", or perhaps it is an artifact of displaying those values. In either case we would need to see your code, because otherwise we have to rely on using our crystal balls... and sadly they are just not very reliable.
"How can I stop MATLAB from doing this to values?"
We don't know until we can diagnose and identify what is happening. We can't diagnose without seeing the patient. Ergo, edit your question, click the paperclip button to upload both your code and enough data to run the code and see this effect. Also clearly explain how you view the data to observe this effect.
Image Analyst
Image Analyst 2016 年 6 月 26 日
Exactly what does "the file says" mean? Did you write the array back out to disk with dlmwrite() and you're popping it open with wordpad or something???
Please attach your data file and m script file with the paper clip icon.

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

回答 (2 件)

Star Strider
Star Strider 2016 年 6 月 26 日

0 投票

‘Or is this just a result of displaying the matrix?’
Exactly! See the documentation for the format command for the different display options.

4 件のコメント

rkepp12
rkepp12 2016 年 6 月 26 日
So the matrix still has the exact value then? I just want to make sure I do not lose data.
Star Strider
Star Strider 2016 年 6 月 26 日
MATLAB retains full internal precision (within the limits of its 64-bit floating point representation) for everything, regardless of what your format display choice is. It will have your data to the precision you read them in.
Star Strider
Star Strider 2016 年 6 月 26 日
format long g

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

Image Analyst
Image Analyst 2016 年 6 月 26 日

0 投票

1 件のコメント

rkepp12
rkepp12 2016 年 6 月 26 日
I tried using "format long" and it is still rounding off numbers when I don't want it to...

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

カテゴリ

ヘルプ センター および File ExchangeIntroduction to Installation and Licensing についてさらに検索

製品

タグ

質問済み:

2016 年 6 月 26 日

コメント済み:

2016 年 6 月 26 日

Community Treasure Hunt

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

Start Hunting!

Translated by