查看: 3019|回复: 2|关注: 0

[已答复] cell数组统计满足某一条件数目

[复制链接]

论坛优秀回答者

中级

531 麦片

财富积分


5001500


7

主题

568

帖子

114

最佳答案
  • 关注者: 30
发表于 2015-10-26 20:44:56 | 显示全部楼层 |阅读模式
如图所示为39176*2cell数组,第一列为日期,跨度为2015-01-01到2015-09-30,每天的重复日数不等,第二列为评分结果,问怎样统计出每天评分结果大于0、等于0和小于0的数目,求各位前辈指点下,拜托啦
U8FOH`UJ~V_74(+KS~F5U.png
回复主题 已获打赏: 0 积分

举报

MATLAB 基础讨论
版块优秀回答者

入门

208 麦片

财富积分


50500


197

主题

484

帖子

21

最佳答案
  • 关注者: 1
发表于 2015-10-26 20:54:03 | 显示全部楼层
我说下我想的:
1. 先对第一列按照日期分组;
2. 对于每一组,按照第二列排序;
3. 对排序后的数据利用find查找0的位置,由0的两端位置以及总行数就可以计算得到
回复此楼 已获打赏: 0 积分

举报

论坛优秀回答者

中级

531 麦片

财富积分


5001500


7

主题

568

帖子

114

最佳答案
  • 关注者: 30
 楼主| 发表于 2015-10-26 21:52:15 | 显示全部楼层
燎原星火 发表于 2015-10-26 20:54
我说下我想的:
1. 先对第一列按照日期分组;
2. 对于每一组,按照第二列排序;

我试着编了下程序,先统计三天的数据,可是运行出来结果不对,麻烦前辈看看哪儿错了,不胜感激
% 读取2015年数据,stockdata2015为股票得分,double型数据,date2015为日期数据,cell型数据
[stockdata2015,date2015] = xlsread('股票得分.xlsx','2015');
stockdata2015 = num2cell(stockdata2015);
stock2015 = [date2015,stockdata2015];
% 2015年数据个数
N = size(stock2015,1);
day_1 = ['01';'02';'03';'04';'05';'06';'07';'08';'09';'10';'11';'12';'13';'14';'15';'16';'17';'18';...
    '19';'20';'21';'22';'23';'24';'25';'26';'27';'28';'29';'30';'31'];
n1 = size(day_1,1);
for i = 1:N
    for j = 1:3
        time = strcat('2015','01',day_1(j,:));
       switch time
          case '20150101'
             pos{j} = sum(stock2015{i,2} > 0);
             neu{j} = sum(stock2015{i,2} == 0);
             neg{j} = sum(stock2015{i,2} < 0);
          case '20150102'
             pos{j} = sum(stock2015{i,2} > 0);
             neu{j} = sum(stock2015{i,2} == 0);
             neg{j} = sum(stock2015{i,2} < 0);
          case '20150103'
             pos{j} = sum(stock2015{i,2} > 0);
             neu{j} = sum(stock2015{i,2} == 0);
             neg{j} = sum(stock2015{i,2} < 0);
       end
    end
end
回复此楼 已获打赏: 0 积分

举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表