필터 지우기
필터 지우기

Replace a character in a Table

조회 수: 38 (최근 30일)
mary
mary 2023년 4월 5일
댓글: Walter Roberson 2023년 4월 6일
Hi,
I have a table and I wanted to replace the character E into D, e.g. 5.1155017E-03 -> 5.1155017D-03
How could I do this?

답변 (1개)

Walter Roberson
Walter Roberson 2023년 4월 5일
편집: Walter Roberson 2023년 4월 5일
You can use https://www.mathworks.com/help/matlab/ref/matlab.mixin.customcompactdisplayprovider-class.html to customize the way that a table displays when you disp() or inside the variable browser.
This will not affect how the table is output to a file if you use writetable(), so if your real task is to write the data to file using D format, then the above will not help.
If your actual task is to write to a file, then you are probably better off using compose() of the table variables using %E formats, and then use regexprep() with a pattern of '(?=[\d\.])E' and a replacement of 'D' -- unless, that is, you just happen to have text items that are of the form digit or period followed by E ... if so then the detection pattern would have to be made more careful.
After replacement of the characters, you would then write the characters to file, possibly using writelines()
  댓글 수: 2
mary
mary 2023년 4월 5일
편집: mary 2023년 4월 5일
Thanks @Walter Roberson for your reply. My objective is to write the data to file and indeed, I do use writetable().
Is there anyway to modify directly this part taken from here:
new_Table = varfun(@(x) num2str(x, ['%' sprintf('.%dE', n_decimal)]), Table);
to write the data using D format? I tried to change .%dE into .%dD, but it did not work.
Walter Roberson
Walter Roberson 2023년 4월 6일
fmt = sprintf('%%.%dE', n_decimal);
formatted = strrep(compose(string(fmt, Table{:,:})), 'E', 'D');
new_Table = array2table(formatted, 'VariableNames', Table.Properties.VariableNames);

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Tables에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by