【问题标题】:Using MATLAB to find strings of numbers in nominal data使用 MATLAB 在名义数据中查找数字字符串
【发布时间】:2013-08-29 11:08:45
【问题描述】:

我有一个包含年、月、日和超出范围的名义数据文件。如果一天超出,则分配1。如果不是超出,则分配0。我想查找以1为特征的日期字符串。字符串的最小长度必须为2 . 另外,由于 3 天的 1 还包含 2 天的 1 字符串,因此必须至少有一天分隔 1 字符串才能将字符串分开。换句话说,一个 2 天的字符串与另一个 1 字符串之间必须至少有 1 天,才能被视为 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);

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

谢谢,

扎克

【问题讨论】:

  • 任何建议都将不胜感激!
  • 几件事:1)你能从file_name.txt发布一些示例数据吗? 2)您遇到的问题到底是什么?为什么你的代码不起作用? 3)您在问题中使用了“字符串”一词,我认为您的意思是“系列”或“连续”。 “字符串”,w.r.t。编程语言具有非常特定的含义(即一系列字符),这与您在问题中使用“字符串”的方式不同。如果我不在基地,请告诉我!

标签: string matlab


【解决方案1】:

这段代码如何让你的 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 即可查看选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    • 1970-01-01
    • 2023-02-23
    • 1970-01-01
    • 2012-04-09
    • 2019-05-04
    • 2020-06-19
    相关资源
    最近更新 更多