Create an extra row in a table that show the means of all columns (but without any extra headings)

2 visualizaciones (últimos 30 días)
Hello, I have a table that I have created and display it in text area
This is my code:
params = ["ROI_L";"ROI_C";"ROI_R"];
tbl = table(params,FWHMX,FWHMY,FWHM2D,CenInt);
str = formattedDisplayText(tbl);
str = regexprep(str,'</?strong>','');
ReportMessage(app,str); % My own function, see below
At the bottom I have attempted to add the means of each column by doing this:
% Get Means
M = varfun(@mean, tbl, 'InputVariables', @isnumeric);
M1=table2cell(M)
M1=[{'Mens:'},M1]
str = formattedDisplayText(M1)
str = regexprep(str,'</?strong>','');
ReportMessage(app,str); % My own fucntion, see below
But its wrapping and not aligned to the table. The same thing happens if I DONT convert the table to a cell array via (as well as adding exctra headings
M1=table2cell(M)
M1=[{'Mens:'},M1]
This is how it looks without the table2cell step:
Is there a way in table format to get the means of the columns (but without any column header)
heres my report message function
function ReportMessage(app,msg)
currString=get(app.MessagesTextArea,'Value');
%currString=[{char(msg)};currString]; %add to top of message box
currString=[currString; {char(msg)}]; %add to bottom of message box
app.MessagesTextArea.Value=currString;
drawnow;
scroll(app.MessagesTextArea,'bottom');
end
  2 comentarios
Walter Roberson
Walter Roberson el 4 de Jul. de 2025
Perhaps something like,
params = ["ROI_L";"ROI_C";"ROI_R"];
tbl = table(params,FWHMX,FWHMY,FWHM2D,CenInt);
M = ["Means", table2cell(varfun(@mean, tbl, 'InputVariables', @isnumeric))];
tbl{end,:} = M;
str = formattedDisplayText(tbl);
str = regexprep(str,'</?strong>','');
which should add a row with name "Means" to the end of the table.
Jason
Jason el 4 de Jul. de 2025
Editada: Jason el 4 de Jul. de 2025
Perfect Walter thankyou.
(I did have to change this
tbl{end,:} = M;
to this
tbl{end+1,:} = M;
as it was overwriting my last row

Iniciar sesión para comentar.

Respuesta aceptada

Chuguang Pan
Chuguang Pan el 4 de Jul. de 2025
Editada: Chuguang Pan el 4 de Jul. de 2025
params = ["ROI_L";"ROI_C";"ROI_R"];
FWHMX = [3.09;3.14;3.36];
FWHMY = [3.00;2.92;2.88];
FWHM2D = [3.05;3.03;3.12];
CenInt = [217;212;162];
tbl = table(params,FWHMX,FWHMY,FWHM2D,CenInt);
meanTbl = mean(tbl(:,2:end));
meanTbl.params = "Mean";
newTbl = [tbl;meanTbl];
str = formattedDisplayText(newTbl,"NumericFormat","bank")
str =
" params FWHMX FWHMY FWHM2D CenInt _______ _____ _____ ______ ______ "ROI_L" 3.09 3.00 3.05 217.00 "ROI_C" 3.14 2.92 3.03 212.00 "ROI_R" 3.36 2.88 3.12 162.00 "Mean" 3.20 2.93 3.07 197.00 "

Más respuestas (0)

Categorías

Más información sobre Data Type Conversion en Help Center y File Exchange.

Productos


Versión

R2024b

Community Treasure Hunt

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

Start Hunting!

Translated by