matlab how use format bank in cell arrays
11 ビュー (過去 30 日間)
古いコメントを表示
I am sorry if I repeated any of the questions, but I did not find an answer to my problem anywhere.
I would like the data displayed in my cell array to be in a decimal place.
I used the bank format but it doesn't work.
I tried several solutions with rounding, tahat I found here, but I got the error that the solution is only possible for a 2D table.
I also tried to assign a format to individual rows in the arrays - it doesn't work
I have an cell array of data retrieved from outside (% f)
I need to paste some data to Excel and when I copy it I get the result:
0.763361344537815 6.71428571428571 -4.43000000000000 -0.0363619047619048 0.170616560896359 10 100 2.79400000000000 1.43163922691482
I need many files and formatting in Excel will take a long time, that's why I wanted to change the format directly in matlab.
0 件のコメント
回答 (2 件)
Guillaume
2020 年 1 月 22 日
There's several things here:
Firstly, format only affects the way matlab displays numbers at the command prompt. It does not affect what is stored, and it does not affect how they're displayed in the variable editor. Since it does not affect what is stored, a corrolary is that it does not affect the way numbers are exported to excel, text files, or any other file format.
If you set format bank and display your cell array at the command line (with e.g celldisp) then numbers will indeed show with 2 decimals. If that's not the case for you, then you've found a bug. But again, that doesn't affect the numbers themselves, matlab still store them to full precision (~16 decimal digits)
If you want to change the precision with which the numbers are stored, you do need to use round. If your data is stored in a cell array, then round needs to be applied to each cell of the cell array, not to the cell array itself. It's not very clear what you have exactly, something like:
roundedcellarray = cellfun(@(m) round(m, 2), yourcellarray, 'UniformOutput', false);
may work.
You should not be pasting data between matlab and excel (or vice-versa), there are much more reliable ways of transfering data between the two, such as writetable, readtable, writematrix, readmatrix, etc. Again, it's not very clear what you are doing.
4 件のコメント
Stephen23
2020 年 1 月 22 日
"If you want to change the precision with which the numbers are stored..."
Then you need to change numeric class, rounding makes no difference to the storage precision.
Guillaume
2020 年 1 月 22 日
@stephen, you didn't include my (roughly) in your quote which was meant as some big hand-waving to avoid talking about floating point representation. For the purpose of changing 0.763361344537815 to (again hand-waving away actual FP representation) 0.76 rounding would work.
But it's really not clear what caroline is after.
参考
カテゴリ
Help Center および File Exchange で Spreadsheets についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!