现在遇到一个问题,自己看这个问题感觉应该不难,但是想了半天,还是没有什么思路。问题是这样的:
如上面的图所示,(a)为我已经拥有的一组Time-series数据,将数据呈现在坐标上就是图(a)所示的样子,现在我想经过一系列条件,满足后输出如图(b)的样子,也就是数据在开始时大于730的情况下输出500,并且随着时间的变化,数据不低于730就输出500;但是只要(a)里面的数据低于730,输出就从500变为350,并且一直在达到1000之前维持输出350,一旦过了1000之后就又变成输出500,直到数据低于730之前保持输出500……以此类推。
我很想知道解决问题的思路是怎样的?最好可以帮忙提供一下shell或者是python的代码,由于本人基本不会编程,所以很想参考着学习一下。
谢谢大家了!
请教个问题,请各位不吝赐教
- parry_all
- 帖子: 732
- 注册时间: 2008-07-01 9:53
- 来自: Dunedin, New Zealand
请教个问题,请各位不吝赐教
心如苍井空似水,意比松岛枫叶飞。窗外武藤兰花香,情似饭岛爱相随。
-
- 帖子: 919
- 注册时间: 2009-07-01 22:04
Re: 请教个问题,请各位不吝赐教
很简单的,无非是输出影响触发条件。
#!/bin/bash
b=0
a=0
function f_condition
{
if [[ $b -eq 0 ]];then
if [[ $a -gt 730 ]];then
b=500
fi
elif [[ $b -eq 500 ]];then
if [[ $a -lt 730 ]];then
b=350
fi
elif [[ $b -eq 350 ]];then
if [[ $a -gt 1000 ]];then
b=500
fi
fi
echo "$a -- $b"
}
f_condition
while true;do
a=$(($RANDOM%2000+1))
sleep 1
f_condition
done
#!/bin/bash
b=0
a=0
function f_condition
{
if [[ $b -eq 0 ]];then
if [[ $a -gt 730 ]];then
b=500
fi
elif [[ $b -eq 500 ]];then
if [[ $a -lt 730 ]];then
b=350
fi
elif [[ $b -eq 350 ]];then
if [[ $a -gt 1000 ]];then
b=500
fi
fi
echo "$a -- $b"
}
f_condition
while true;do
a=$(($RANDOM%2000+1))
sleep 1
f_condition
done
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
- parry_all
- 帖子: 732
- 注册时间: 2008-07-01 9:53
- 来自: Dunedin, New Zealand