Replace a character in a Table

23 visualizzazioni (ultimi 30 giorni)
mary
mary il 5 Apr 2023
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?

Risposte (1)

Walter Roberson
Walter Roberson il 5 Apr 2023
Modificato: Walter Roberson il 5 Apr 2023
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 Commenti
mary
mary il 5 Apr 2023
Modificato: mary il 5 Apr 2023
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 il 6 Apr 2023
fmt = sprintf('%%.%dE', n_decimal);
formatted = strrep(compose(string(fmt, Table{:,:})), 'E', 'D');
new_Table = array2table(formatted, 'VariableNames', Table.Properties.VariableNames);

Accedi per commentare.

Community Treasure Hunt

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

Start Hunting!

Translated by