MATLAB如何读取excel中相同年份对应的数据,并且取出相同年份对应数据的最大值及日期?

MATLAB如何读取excel中相同年份对应的数据,并且取出同一年份对应数据的最大值及日期?同时把年份也取出来。
还有我想问一下能不能设定一个最大值的上限,假设上限是5,如果excel里的数据的最大值超过5就剔除这个值和对应的日期,然后再取第二大的值和上限比较,每个年份的最大值都和上限要比较一下,直到都满足不超过5的条件,最后还要使这些日期和数据还是连续的,因为最后要用plot画出一个趋势图观察一下趋势走向。谢谢了。

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)));

温馨提示:答案为网友推荐,仅供参考
相似回答