MATLAB Answers

0

add a cell array in double for one more column in uitable

Asked by Venkat Ta on 15 Jul 2019
Latest activity Edited by Adam Danz
on 15 Jul 2019
Hi,
I would like to add units column in the 4th column but it's in cell form and join_ all is the double attribute array, it doesn't allow
good ideas really appreciated
Thanks
Best regards
Venkat
%% Start
clear all; close all; clc;
rnames = {'<html><font size=+1>First','<html><font size=+1>Second','<html><font size=+1>Third','<html><font size=+1>fourth','<html><font size=+1>fifth'}; % These are your row names
cnames = {'<html><font size=+1>X=data','<html><font size=+1>Y-Data','<html><font size=+1>[Z-Data]'}; % for bold <h1>World</h1>
x = [38;43;38;40;49];
y = [71;69;64;67;64];
z = [176;163;131;133;119];
Units = {'mm/N';'1/N';'1/Nmm';'1/Nmm^2';'1/Nmm^3';};
join_all=[x y z];
fig = figure('Position', get(0, 'Screensize'),'Name','Numbers');
t = uitable(fig,'Data',join-all,'ColumnName',cnames,...
'RowName',rnames,'Position',[20 20 1050 800] ,'FontSize',20); %,'Units','Normalized','Position',[0 0 1 1],'fontSize',19
set(t,'ColumnWidth',{100})
table_extent = get(t,'Extent');
set(t,'Position',[1 1 table_extent(3) table_extent(4)])
figure_size = get(fig,'outerposition');
desired_fig_size = [figure_size(1) figure_size(2) table_extent(3)+15 table_extent(4)+65];
set(fig,'outerposition', desired_fig_size);

  0 Comments

Sign in to comment.

Tags

Products


Release

R2018a

2 Answers

Answer by the cyclist
on 15 Jul 2019
Edited by the cyclist
on 15 Jul 2019
 Accepted Answer

Convert the numeric array into a cell array before concatenating. Then use the cell array as the input to the uitable command.
%% Start
clear all; close all; clc;
rnames = {'<html><font size=+1>First','<html><font size=+1>Second','<html><font size=+1>Third','<html><font size=+1>fourth','<html><font size=+1>fifth'}; % These are your row names
cnames = {'<html><font size=+1>X=data','<html><font size=+1>Y-Data','<html><font size=+1>[Z-Data]','<html><font size=+1>[unit-Data]'}; % for bold <h1>World</h1>
x = [38;43;38;40;49];
y = [71;69;64;67;64];
z = [176;163;131;133;119];
Units = {'mm/N';'1/N';'1/Nmm';'1/Nmm^2';'1/Nmm^3';};
join_all=[num2cell([x y z]), Units];
fig = figure('Position', get(0, 'Screensize'),'Name','Numbers');
t = uitable(fig,'Data',join_all,'ColumnName',cnames,...
'RowName',rnames,'Position',[20 20 1050 800] ,'FontSize',20); %,'Units','Normalized','Position',[0 0 1 1],'fontSize',19
set(t,'ColumnWidth',{100})
table_extent = get(t,'Extent');
set(t,'Position',[1 1 table_extent(3) table_extent(4)])
figure_size = get(fig,'outerposition');
desired_fig_size = [figure_size(1) figure_size(2) table_extent(3)+15 table_extent(4)+65];
set(fig,'outerposition', desired_fig_size);
I also fixed the fact that you wrote join-all instead of join_all in the uitable command.

  0 Comments

Sign in to comment.


Answer by Adam Danz
on 15 Jul 2019
Edited by Adam Danz
on 15 Jul 2019

data = [num2cell(join_all), Units]; % <--- cell array
t = uitable(fig,'Data',data);

  0 Comments

Sign in to comment.