Round all values in table
    44 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!



