Round all values in table
43 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi,
I have a table with calculated values. Now I want to round all values to 2 decimals. How can I do that in once for the whole table?
0 Kommentare
Antworten (2)
Scott MacKenzie
am 25 Okt. 2021
Bearbeitet: Scott MacKenzie
am 25 Okt. 2021
I think this achieves what you are after:
% test data
T1 = array2table(rand(5))
% rounded to 2 decimal places
T2 = array2table(round(T1{:,:},2))
0 Kommentare
Andrew Sandeman
am 14 Jul. 2025
Another solution using varfun()
% test data
T = array2table(rand(5))
% round data in table to 2 d.p.
varfun(@(x)round(x,2), T)
The only difference is the variable names.
4 Kommentare
Walter Roberson
am 14 Jul. 2025
That's an interesting use of table assignment.
Needs more work if there could be multiple output variables.
t = table(rand(5,1), rand(5,1), repelem("a",5,1))
outvars = t.Properties.VariableNames(varfun(@isnumeric,t,OutputFormat="uniform"))
t(:,outvars) = varfun(@(x)round(x,2), t, InputVariables=outvars)
Andrew Sandeman
am 15 Jul. 2025
And here it is wrapped up in a function.
Awesome! I feel like with some documentation it might be worth putting on the file exchange?
t = table(rand(5,1), rand(5,1), repelem("a",5,1))
conditionalVarfun(t, @isnumeric, @(x)round(x,2))
%% functions
function t = conditionalVarfun(t, fh_condition, fh_operation)
% t (table)
% fh_condition e.g. @isnumeric
% fh_operation e.g. @(x)round(x,2)
p = inputParser;
p.addRequired("t", @istable)
p.addRequired("fh_condition", @isfunctionhandle)
p.addRequired("fh_operation", @isfunctionhandle)
p.parse(t, fh_condition, fh_operation)
t = p.Results.("t");
fh_condition = p.Results.("fh_condition");
fh_operation = p.Results.("fh_operation");
outvars = t.Properties.VariableNames(varfun(fh_condition,t,OutputFormat="uniform"));
t(:,outvars) = varfun(fh_operation, t, InputVariables=outvars);
end
function bool = isfunctionhandle(x)
bool = isa(x, 'function_handle');
end
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!