【问题标题】:data filtering in matlabmatlab中的数据过滤
【发布时间】:2015-09-13 00:11:24
【问题描述】:

我是matlab的初学者。我正在做一个小项目,我遇到了关于过滤的问题 我在下面有一部分数据

'black' 11  '6/21/2013' <1x1 cell>
'blue'  11  '6/3/2013'  <1x1 cell>
'yellow'12  '4/18/2015' <1x1 cell>
'white' 13  '11/11/2013'<1x1 cell>
'red'   14  '8/4/2014'  <1x1 cell>
'blue'  15  '8/4/2014'  <1x1 cell>
'yellow'16  '12/6/2014' <1x1 cell>
'red'   17  '10/4/2014' <1x1 cell>
'red'   18  '4/17/2015' <1x2 cell>
green'  19  '12/14/2014'<1x1 cell>
orange' 20  '3/18/2015' <1x1 cell>

数据的最后一列是一个元胞数组,其中包含一些值,如下所示:

<1x1 cell>  'b1'    
<1x1 cell>  'c1'    
<1x1 cell>  'b2'    
<1x1 cell>  'c1'    
<1x1 cell>  'b5'    
<1x1 cell>  'd2'    
<1x1 cell>  'f1'    
<1x1 cell>  'f1'    
<1x2 cell>  'b2'    'c1'
<1x1 cell>  'c1'    
<1x1 cell>  'c1'    

我想计算用户选择的两个日期之间 b1、c1、f1 的出现次数(整个数据集的值从 a 到 z、a1 到 z1 等等),并将输出设为

from date:
to date: 

      count
f1 
b1
c1

谢谢你的帮助。

【问题讨论】:

  • @Adriaan - 感谢您的输入,问题是我有从 a 到 z 开始的字母,例如,我在这里显示了 3 (a,b,c) - 谢谢输入,问题是我有从 a 到 z 开始的字母,例如,我在这里显示了 3 (a,b,c)

标签: matlab filtering


【解决方案1】:
StartDate = input('What is the start date ','s'); % Prompt user for start date
EndDate = input('What is the end date ','s'); % Prompt user for end date
StartDate = datenum(StartDate); % Convert to datenum
EndDate = datenum(EndDate);

a=0;b=0;c=0; % Initalise counters
alphabet = {'a', 'b', 'c', ....} %EXPAND THIS TO Z
lettercount = zeros(1,numel(alphabet));
for ii = 1:size(YourCell,1)
   celldat = datenum(YourCell{ii,3}); % Get date 
   if celldat > StartDate && celldat < EndDate % Check time boundaries
     for jj = 1:size(YourCell{ii,4})
         tmp = strcmp(YourCell{ii,4}{jj},alphabet);
         lettercount = lettercount + tmp;
     end
   end
end

这里发生的情况是,您首先提示用户输入时间间隔的开始日期和结束日期。然后将所有日期转换为datenum 以便于比较。初始化计数器,然后根据提示日期检查每个单元格的日期,如果在该时间段内,则在lettercount 中收集字母,其中lettercount(1)=alettercount(2)=b

【讨论】:

  • @Adriaan-感谢您的输入,问题是我的字母从 a 到 z 开始,例如,我在这里显示了 3 (a,b,c)
  • 如果您包含字母的单元格每次只包含 1 个字母,我可以这样做。在您的示例中,一个单元格包含 2 个字母;它不再起作用了。
  • 没问题,我的单元格中有多个字母。
  • 我在内部单元格周围添加了一个循环,逐个检查每个元素。
  • 哦,我明白了!那么问题是字母。如果我有数字而不是字母,我可以改变然后调整
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多