MATLAB:为矩阵添加标题
数据MATLAB:为矩阵添加标题,matlab,Matlab,数据 x=[33 44 29; 16 25 45; 33 19 54; 22 21 49; 11 24 56]; 包含一种产品在三个不同商店的5天销售。因此,列表示商店1、2和3,行表示星期一到星期五 现在我计算了每天的汇总统计数据 meanday=mean(x'); medianday=median(x'); minday=min(x'); maxday=max(x'); varianceday=var(x'); summaryday=[meanday;medianday;m
x=[33 44 29; 16 25 45; 33 19 54; 22 21 49; 11 24 56];
包含一种产品在三个不同商店的5天销售。因此,列表示商店1、2和3,行表示星期一到星期五
现在我计算了每天的汇总统计数据
meanday=mean(x');
medianday=median(x');
minday=min(x');
maxday=max(x');
varianceday=var(x');
summaryday=[meanday;medianday;minday;maxday;varianceday];
现在我想添加如下标题:
summaryday =
Mean Median Minimum Maximum variance
Monday 32.3333 28.6667 35.3333 27.6667 30.3333
Tuesday 33.0000 25.0000 33.0000 22.0000 24.0000
Wednesday 20.0000 16.0000 19.0000 21.0000 11.0000
Thursday 44.0000 45.0000 54.0000 40.0000 56.0000
Friday 144.3333 220.3333 310.3333 114.3333 536.3333
如何添加标题?对于2013b之前的Matlab版本,可以使用cell array。对于2013b之前的Matlab版本,可以使用cell array。如果没有R2013b或更高版本,最好的解决方案是围绕普通矩阵编写一个小类,它只实现构造函数和
disp
函数
下面是一个这样的例子:
>> W = WeeklyStatistics(rand(7,5), 'Mean', 'Median', 'Minimum', 'Maximum', 'Variance')
W =
Mean Median Minimum Maximum Variance
Monday 0.228977 0.442678 0.084436 0.263803 0.853031
Tuesday 0.913337 0.106653 0.399783 0.145539 0.622055
Wednesday 0.152378 0.961898 0.259870 0.136069 0.350952
Thursday 0.825817 0.004634 0.800068 0.869292 0.513250
Friday 0.538342 0.774910 0.431414 0.579705 0.401808
Saturday 0.996135 0.817303 0.910648 0.549860 0.075967
Sunday 0.078176 0.868695 0.181847 0.144955 0.239916
>>
这是我用来做这件事的课程:
classdef WeeklyStatistics < double
properties
columnTitles
weekDays = {
'Monday'
'Tuesday'
'Wednesday'
'Thursday'
'Friday'
'Saturday'
'Sunday'
};
end
methods
function obj = WeeklyStatistics(M, varargin)
obj = obj@double(M);
%// Just copy the data
obj.columnTitles = varargin;
%// NOTE: very basic checks (you might want to think a bit more
%// about these
if ~all(cellfun('isclass', obj.columnTitles, 'char'))
error('WeeklyStatistics:invalid_column_titles',...
'Invalid column title format. All column titles should be given as strings.');
end
if size(obj,2) ~= numel(obj.columnTitles)
error('WeeklyStatistics:dimension_mismatch',...
'Number of columns in data disagrees with number of column titles.');
end
if size(obj,1) > numel(obj.weekDays)
error('WeeklyStatistics:dimension_mismatch',...
'Number of rows in data exceeds number of days in a week.');
end
end
%// These are needed to make the matrix behave like an ordinary matrix
function R = subsref(obj,varargin)
R = subsref(double(obj), varargin{:}); end
function R = subsasgn(obj,varargin)
R = WeeklyStatistics(subsasgn(double(obj), varargin{:}), obj.columnTitles{:}); end
%// Show the matrix
function disp(obj)
%// Print column titles
fprintf(1,repmat(' ',1,16));
fprintf(1,'%16s', obj.columnTitles{:});
fprintf(1,'\n');
%// Print data for all weekdays
dobj = double(obj);
for ii = 1:size(dobj,1)
fprintf(1, '%16s', obj.weekDays{ii});
fprintf(1,'%16f',dobj(ii,:));
fprintf(1,'\n');
end
fprintf(1,'\n');
%// NOTE: proper disp() implementations check the current setting
%// of format() and adjust spacing and formatting accordingly
end
end
end
classdef weeklystaticsnumel(obj.工作日)
错误('WeeklyStatistics:维度不匹配',。。。
“数据中的行数超过一周中的天数。”);
结束
结束
%//这些是使矩阵像普通矩阵一样工作所必需的
函数R=subsref(obj,varargin)
R=subsref(double(obj),varargin{:});结束
函数R=subsasgn(obj,VARARGN)
R=周统计(subsasgn(double(obj),varargin{:}),obj.columnTitles{:});结束
%//显示矩阵
功能显示(obj)
%//列名
fprintf(1,repmat('',1,16));
fprintf(1,'%16s',对象列标题{:});
fprintf(1,'\n');
%//打印所有工作日的数据
dobj=双(obj);
对于ii=1:尺寸(dobj,1)
fprintf(1,'%16s',对象工作日{ii});
fprintf(1,,%16f',dobj(ii,:);
fprintf(1,'\n');
结束
fprintf(1,'\n');
%//注意:正确的disp()实现检查当前设置
%//,并相应地调整间距和格式
结束
结束
结束
如果没有R2013b或更高版本,最好的解决方案是围绕普通矩阵编写一个小类,它只实现构造函数和disp
函数
下面是一个这样的例子:
>> W = WeeklyStatistics(rand(7,5), 'Mean', 'Median', 'Minimum', 'Maximum', 'Variance')
W =
Mean Median Minimum Maximum Variance
Monday 0.228977 0.442678 0.084436 0.263803 0.853031
Tuesday 0.913337 0.106653 0.399783 0.145539 0.622055
Wednesday 0.152378 0.961898 0.259870 0.136069 0.350952
Thursday 0.825817 0.004634 0.800068 0.869292 0.513250
Friday 0.538342 0.774910 0.431414 0.579705 0.401808
Saturday 0.996135 0.817303 0.910648 0.549860 0.075967
Sunday 0.078176 0.868695 0.181847 0.144955 0.239916
>>
这是我用来做这件事的课程:
classdef WeeklyStatistics < double
properties
columnTitles
weekDays = {
'Monday'
'Tuesday'
'Wednesday'
'Thursday'
'Friday'
'Saturday'
'Sunday'
};
end
methods
function obj = WeeklyStatistics(M, varargin)
obj = obj@double(M);
%// Just copy the data
obj.columnTitles = varargin;
%// NOTE: very basic checks (you might want to think a bit more
%// about these
if ~all(cellfun('isclass', obj.columnTitles, 'char'))
error('WeeklyStatistics:invalid_column_titles',...
'Invalid column title format. All column titles should be given as strings.');
end
if size(obj,2) ~= numel(obj.columnTitles)
error('WeeklyStatistics:dimension_mismatch',...
'Number of columns in data disagrees with number of column titles.');
end
if size(obj,1) > numel(obj.weekDays)
error('WeeklyStatistics:dimension_mismatch',...
'Number of rows in data exceeds number of days in a week.');
end
end
%// These are needed to make the matrix behave like an ordinary matrix
function R = subsref(obj,varargin)
R = subsref(double(obj), varargin{:}); end
function R = subsasgn(obj,varargin)
R = WeeklyStatistics(subsasgn(double(obj), varargin{:}), obj.columnTitles{:}); end
%// Show the matrix
function disp(obj)
%// Print column titles
fprintf(1,repmat(' ',1,16));
fprintf(1,'%16s', obj.columnTitles{:});
fprintf(1,'\n');
%// Print data for all weekdays
dobj = double(obj);
for ii = 1:size(dobj,1)
fprintf(1, '%16s', obj.weekDays{ii});
fprintf(1,'%16f',dobj(ii,:));
fprintf(1,'\n');
end
fprintf(1,'\n');
%// NOTE: proper disp() implementations check the current setting
%// of format() and adjust spacing and formatting accordingly
end
end
end
classdef weeklystaticsnumel(obj.工作日)
错误('WeeklyStatistics:维度不匹配',。。。
“数据中的行数超过一周中的天数。”);
结束
结束
%//这些是使矩阵像普通矩阵一样工作所必需的
函数R=subsref(obj,varargin)
R=subsref(double(obj),varargin{:});结束
函数R=subsasgn(obj,VARARGN)
R=周统计(subsasgn(double(obj),varargin{:}),obj.columnTitles{:});结束
%//显示矩阵
功能显示(obj)
%//列名
fprintf(1,repmat('',1,16));
fprintf(1,'%16s',对象列标题{:});
fprintf(1,'\n');
%//打印所有工作日的数据
dobj=双(obj);
对于ii=1:尺寸(dobj,1)
fprintf(1,'%16s',对象工作日{ii});
fprintf(1,,%16f',dobj(ii,:);
fprintf(1,'\n');
结束
fprintf(1,'\n');
%//注意:正确的disp()实现检查当前设置
%//,并相应地调整间距和格式
结束
结束
结束
如果您有统计工具箱a“”,则可以有列的标题和说明。(请参见示例)。如果您有统计工具箱a“”,则可以有列的标题和说明。(请参见示例)。您可能会觉得有趣。但是,仅可从R2013b获得……您可能会发现有趣。仅可从R2013b thoug获得