具有用于thingpeak数据的逻辑运算符的条件语句

时间:2017-06-30 11:14:45

标签: matlab conditional logical-operators

我正在为我的气象站进行matlab分析的一些事情代码,检查最后24个读数,然后根据给定条件给出警报,我给出了这个条件,但我想我搞砸了一些因此出错了结果。我希望答案是整体逻辑1或0.即使是不应该给我一个的值,我得到1,并且两个变量的答案都是24 * 1逻辑数组。但即使这样,推文也不会被生成。这是我的代码;

    t =thingSpeakRead(293182,'Fields',1,'NumPoints',24,'OutputFormat','matrix');
h =thingSpeakRead(293182,'Fields',2,'NumPoints',24,'OutputFormat','matrix');

DangerAlert = ((t>42.5)&(t<43.5)&(h>17)&(h<21))|(((t>40.5)&(t<43.5))&((h>21)&(h<27)))|((t>39.5)&(t<43.5)&(h>27)&(h<31)) |   ((t>38.5)&(t<43.5)&(h>31)&(h<37))| ((t>37.5)&(t<42.5)&(h>37)&(h<41))|   ((t>36.5)&(t<40.5)&(h>41)&(h<47))|   ((t>35.5)&(t<39.5)&(h>47)&(h<51))|   ((t>34.5)&(t<38.5)&(h>51)&(h<57))|  ((t>33.5)&(t<38.5)&(h>57)&(h<68))|   ((t>33.5)&(t<37.5)&(h>63)&(h<68)) |   ((t>32.5)&(t<38.5)&(h>68)&(h<73)) | ((t>31.5)&(t<35.5)&(h>73)&(h<83))|   ((t>30.5)&(t<33.5)&(h>83)&(h<88)) |   ((t>29.5)&(t<33.5)&(h>83)&(h<93))|   ((t>29.5)&(t<32.5)&(h>93)&(h<100))

HeatStrokeAlert=((t>42.5)&(t<43.5)&(h>37)&(h<41)) |  ((t>40.5)&(t<2.5)&(h>41)&(h<47)) | ((t>39.5)&(t<41.5)&(h>47)|(h<51))|  ((t>38.5)&(t<40.5)&(h>51)&(h<57))|  ((t>38.5)&(t<39.5)&(h>57)&(h<63))| ((t>37.5)&(t<38.5)&(h>63)&(h<68))|  ((t>36.5)&(t<38.5)&(h>68)&(h<78))| ((t>35.5)&(t<37.5)&(h>73)&(h<83)) |  ((t>34.5)&(t<36.5)&(h>83)&(h<88)) |  ((t>33.5)&(t<36.5)&(h>88)&(h<93)) |  ((t>33.5)&(t<35.5)&(h>93)&(h<97)) |  ((t>32.5)&(t<34.5)&(h>97))    

if DangerAlert
webwrite('http://api.thingspeak.com/apps/thingtweet/1/statuses/update','api_key', 'XXXXXXXXXXXXX', 'status', 'Alert!Dangerously High temperature tomorrow!')
end
if HeatStrokeAlert
webwrite('http://api.thingspeak.com/apps/thingtweet/1/statuses/update','api_key', 'XXXXXXXXX', 'status', 'Alert!Heat Stroke alert tomorrow!')
end

我知道错误很小。但这需要解决。

1 个答案:

答案 0 :(得分:0)

t的范围值从29.5变为43.5,而h的范围值从17变为100.因此,您在这些数字之间放置的任何值都会给出1,因为您使用的是OR语句||。因此,如果其中任何一个为真,它将返回true(= 1)。

此外,对于网站,请务必遵循以下说明: https://www.mathworks.com/help/matlab/ref/webwrite.html

确保您拥有ThinkSpeak帐户,并尝试更改您的网址以符合其格式:  [thingSpeakURL'update']; 所以添加'update'字符串并使用括号。

另外,将if语句表达式设置为1。所以: 如果DangerAlert = 1