使用MATLAB查找名义数据中的数字串

时间:2013-08-28 15:29:31

标签: string matlab

我有一个包含年,月,日和超标的名义数据文件。如果一天超出,则为其分配1.如果不是超出,则为其分配0.我想查找以1为特征的天数字符串。字符串必须至少为长度2此外,由于3天的1s还包含2天的1s字符串,因此必须至少有一天将字符串1分开以使字符串分离。换句话说,2天的字符串必须在它和另一个1s的字符串之间至少有一天,因为它被认为是2天的字符串。任何长度的所有字符串都必须遵循相同的规则。我不知道如何设置它......这是我到目前为止看到的代码:

load file_name.txt
year=file_name(:,1);
month=file_name(:,2);
day=file_name(:,3);
exceedence=file_name(:,4);

for i=1:61
    yr=i+1950;
    for j=7:8
        for k=1:31
            [yr j k];
            ga=find(year==yr&month==j&day==k&exceedence);
            x=exceedence(ga);

我不必担心闰年,因为我只用了两个月(7月和8月)。在一天结束时,我想要一个文件,其中包含第一列的年份,以及后续列的给定长度的1s的字符串总数。换句话说,我想知道在给定年份中有多少次有2天的字符串,3天的字符串,4天的字符串等等。我希望这是有道理的!

谢谢,

扎克

1 个答案:

答案 0 :(得分:0)

这段代码如何从一开始就得到1和0的序列并不明显。我假设这不是困难的部分,所以一旦你有了这个序列,这就是我要做的。

如果x是你的序列,首先是前置并附加零

x = [0,x,0]

然后使用diff来找到过渡

transitions = diff(x)
upTransitions = find(transitions > 0)
downTransitions = find(transitions < 0)

nDays = downTransitions - upTransitions + 1;

然后你可以采用直方图

hist(nDays)

如果您想自定义直方图分档,只需执行help hist即可查看选项。