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

2 次查看(过去 30 天)
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 个评论
Walter Roberson
Walter Roberson 2025-7-4
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 2025-7-4
编辑:Jason 2025-7-4
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

请先登录,再进行评论。

采纳的回答

Chuguang Pan
Chuguang Pan 2025-7-4
编辑:Chuguang Pan 2025-7-4
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 "

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Data Type Conversion 的更多信息

产品


版本

R2024b

Community Treasure Hunt

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

Start Hunting!

Translated by