임계치 판정을 위한 임계값을 만들어 보았다
임계 값은 문턱, 문턱입니다.
구체적으로는 온도가 x℃가 되었을 때에 경보를 발신한다고 했을 때의 x라고 하는 값이라고 생각해 주세요.
임계 값과 함께 히스테리시스라는 생각이 있습니다.
히스테리시스는 물질 상태가 현재 상태뿐만 아니라 과거 경로의 영향을 받는 것입니다.
조금 이해하기 어려울지도 모릅니다만, threshold를 판단할 때의 폭(여유)이라고 생각해 주세요.
구체적으로는 x℃라는 문턱값을 취할 때 판단하는 폭을 2y로 하면,
판단할 때의 상한값은 x+y, 하한값은 x-y가 됩니다.
즉 x + y를 초과했을 때 상한을 초과했다는 판단
x-y를 밑돌았을 때 하한값을 밑돌았다는 판단을 하도록 합니다.
실제로 c 언어로 구현해 보았습니다.
스레숄드보다 온도가 올라갈 때와 온도가 내려갈 때 경고를 발신하는 프로그램입니다.
그대로 프로그램을 쓰면,
같은 상태에서 여러 번 경고를 발신하기 때문에,
프로그램에 상태를 갖게 합니다.
역치보다 저온 상태일 때 역치를 넘었을 때와,
임계값보다 고온 상태일 때 임계값 아래로 떨어졌을 때 경고를 보내도록 하고 있습니다.
또한. 임계값 근처에서 자주 경고를 보내지 않도록 임계값을 지정합니다.
/*アラートを送信するためのスレッショルドの作成テスト
スレッショルドとヒステリシスは最初に設定する*/
#include<stdio.h>
//statusを定義する
enum status {
high,
low
};
int main(void) {
int value_th; //スレッショルドの値
float hys; //ヒステリシス
float th_higher; //ヒステリシスの上限値
float th_lower; //ヒステリシスの下限値
//入力された値を判断する
float value;
//テストで使用するときは値を手入力する
//value_thを入力する
printf("input threshold: ");
(void)scanf_s("%d", &value_th);
//hysを入力する
printf("input hysteris: ");
(void)scanf_s("%f", &hys);
th_higher = value_th + hys;
th_lower = value_th - hys;
//確認用の表示
printf("th_higher is %F\n", th_higher);
printf("th_lower is %F\n", th_lower);
//閾値よりも低い状態からスタートすると仮定する
int status = low;
//ヒステリシスを含めた値と同じになった場合はlowerのほうに含めることにする
//テストのために10回好きな値を入力できるようにする
for (int i = 0; i < 10; i++) {
printf("input value: ");
(void)scanf_s("%f", &value);
//statusがlowの時に閾値を超えた場合
if (status == low && th_higher < value) {
//alertを出す
printf("this is High\n");
//statusをhighにする
status = high;
}
//siatusがhighの時に閾値を超えた場合
else if (status == high && th_higher < value) {
//特に何もしない
}
//statusがhighの時に閾値を下回る
//statusがlowの時に閾値を下回る場合
if (status == low && th_lower >= value) {
//特に何もしない
}
//statusがhighの時に閾値を下回る
else if (status == high && th_lower >= value) {
//alertを発火する
printf("this is law\n");
//statusをlowにする
status = low;
}
}
return 0;
}
테스트를 시도하고 예상대로 결과가 나왔으므로
조금 개조해, 농업용 IoT 시스템의 경고 발신 판단 부분에 실장했습니다.
지금은 좋은 느낌으로 사용할 수 있습니다.
Reference
이 문제에 관하여(임계치 판정을 위한 임계값을 만들어 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/shinfrom/items/4958c5a4ca4320ae614c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)