fn = 'book1.xls'; % 换成自己的数据文件,注意路径
[dt,date] = xlsread(fn);
daten = arrayfun(@(x) date{x}(1:4),1:length(date),'un',false)';
daten = str2num(cell2mat(daten));
udate = unique(daten);
R = udate;
for k = 1:length(udate)
id = find(daten==udate(k));
tem = dt(id);
R(k,2) = sum(tem);
R(k,3) = max(tem);
R(k,4) = find(dt==max(tem));
end;
disp(['年份 ' '年汇总 ' '年最大值 ' '最大值索引 ']);
disp(vpa(R,4));
disp('最大值日期');
disp(date(R(:,4)));
% 显示示例:
年份 年汇总 年最大值 最大值索引
[ 2014., 8.090, 4.550, 1.]
[ 2015., 4.640, 3.440, 4.]
最大值日期
'2014-3-11'
'2015-2-5'
追问大神。。。这个运行的时候提示
??? Subscripted assignment dimension mismatch.
Error in ==> test5 at 12
R(k,4) = find(dt==max(tem));
是怎么回事啊,我的数据比较多,excel里从2004到2013很多数据。但是这个只能提取到2005的就停了,剩下的日期对应的值都是0。
追答% 因为只能看到部分数据,可能是存在相同数据造成,修改了一下,试试
fn = 'book1.xls'; % 换成自己的数据文件,注意路径
[dt,date] = xlsread(fn);
daten = arrayfun(@(x) date{x}(1:4),1:length(date),'un',false)';
daten = str2num(cell2mat(daten));
udate = unique(daten);
R = udate;
for k = 1:length(udate)
id = find(daten==udate(k));
tem = dt(id);
newt = tem;
newt(newt>5) = []; % 剔除>5的元素
mav = max(newt);
R(k,2) = sum(newt);
R(k,3) = mav;
ii = find(tem==mav);
ii = id(ii);
if length(ii)>1
ii = ii(1);
end;
R(k,4) = ii;
end;
disp(['年份 ' '年汇总 ' '年最大值 ' '最大值索引 ']);
disp(vpa(R,4));
disp('最大值日期');
disp(date(R(:,4)));