How to insert already computed values in a uitable
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi, I’m computing some statistical values from a dataset (z). I’ll repeat this code for 7 more datasets and I would like that all statistical values are displayed in a table for my 8 datasets as follow:
std var mean ...
z1
z2
z3
.
.
.
For the moment, my code look like this and only displays the data in the command window. Thanks for your help!
load C1_Z1
z = C1_Z1(:,3);
%%%%%% STATISTICS
% number of observations
Nz = size(z);
% compute mean
mz = mean(z);
% compute the standard deviation
sigma = std(z);
% compute the median
medianz = median(z);
% compute variance
variance_z = var(z);
% compute skewness
coef_skew = skewness(z);
%compute max value
MaxValue = max(z);
% compute min value
MinValue = min(z);
% STEP 1 - rank the data
a = sort(z);
% compute 25th percentile (first quartile)
Q(1) = median(a(find(a<median(a))));
% compute 50th percentile (second quartile)
Q(2) = median(a);
% compute 75th percentile (third quartile)
Q(3) = median(a(find(a>median(a))));
% compute Interquartile Range (IQR)
IQR = Q(3)-Q(1);
% determine extreme Q1 outliers (e.g., x < Q1 - 3*IQR)
ia = find(a<Q(1)-3*IQR);
if length(ia)>0,
outliersQ1 = a(ia);
else
outliersQ1 = [];
end
% determine extreme Q3 outliers (e.g., x > Q1 + 3*IQR)
ia = find(a>Q(1)+3*IQR);
if length(ia)>0,
outliersQ3 = a(ia);
else
outliersQ3 = [];
end
% compute total number of outliers
Noutliers = length(outliersQ1)+length(outliersQ3);
% display results
disp(['Mamimum Value:',num2str(MaxValue)]);
disp(['Minimum Value:',num2str(MinValue)]);
disp(['Number of Observations:',num2str(Nz)]);
disp(['Mean: ',num2str(mz)]);
disp(['Standard Deviation: ',num2str(sigma)]);
disp(['Variance: ',num2str(variance_z)]);
disp(['Coefficient of Skewness: ',num2str(coef_skew)]);
disp(['Median: ',num2str(medianz)]);
disp(['25th Percentile: ',num2str(Q(1))]);
disp(['50th Percentile: ',num2str(Q(2))]);
disp(['75th Percentile: ',num2str(Q(3))]);
% disp(['Semi Interquartile Deviation: ',num2str(SID)]);
disp(['Number of outliers: ',num2str(Noutliers)]);
%%%Creation of a uitable
t = uitable;
set(t,'ColumnWidth',{25})
cnames = {'Mean','Median','STD', '...’};
rnames = {'z1','z2','z3', '...', 'z8’};
t = uitable('ColumnName',cnames,'RowName',rnames);
2 Kommentare
Jan
am 7 Mai 2013
@Saskia: Did you look at your question after typing it? The unformatted code is such ugly, that I'm deeply surprised, that you do not ask how it can be formatted nicely.
It really puzzles me, that so many user simply do not care about the layout, although their question are obviously not readable. I'd expect dozens of questions in the comment sections like: "Hey, why does my code look such ugly, but in the other threads it is nice?!"
To your problem: Where should this "table" appear? In the command window, a UITABLE or in a file? What did you try and which problems occurred? Until now, you have only explained what you want to do, but you did not ask a question which could be answered.
Akzeptierte Antwort
David Sanchez
am 8 Mai 2013
Save the data of each set in an row of a previously created array, Then
my_data_matrix = zeros(m,n); % where m are the number of datasets and n the computed data ( mean, median.... ).
for k=1:m
my_data_matrix(k,:) = my_calculated_data_array_here;
end
% code to create table....from MATLAB help
f = figure;
data = my_data_matrix;
colnames = {'X-Data', 'Y-Data', 'Z-Data'};
t = uitable(f, 'Data', data, 'ColumnName', colnames, ...
'Position', [20 20 260 100]);
0 Kommentare
Weitere Antworten (1)
Image Analyst
am 8 Mai 2013
Here's a demo for you:
% Create sample data and row and column headers.
columnHeaders = {'n', 'Data Set #1', 'Data Set #2'};
for n=1:10,
rowHeaders{n} = sprintf('Row #%d', n);
tableData{n,1} = n;
tableData{n,2} = 10*rand(1,1);
tableData{n,3} = sprintf('Value = %.2f %s %.2f', rand(1,1), 177, rand(1));
end
% Create the table and display it.
hTable = uitable();
% Apply the row and column headers.
set(hTable, 'RowName', rowHeaders);
set(hTable, 'ColumnName', columnHeaders);
% Display the table of values.
set(hTable, 'data', tableData);
% Size the table.
set(hTable, 'units', 'normalized');
set(hTable, 'Position', [.1 .1 .8 .8]);
set(hTable, 'ColumnWidth', {40, 120, 180});
set(gcf,'name','Image Analysis Demo','numbertitle','off')
0 Kommentare
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!