Data comparison and storing

I've created a sensor to take readings daily .
Humidity =
20×1 string array
"34.099045"
"42.425098"
"33.480418"
"35.790796"
"30.370059"
"44.029928"
"49.041827"
"44.980187"
"45.134548"
"40.841782"
<missing>
<missing>
<missing>
<missing>
<missing>
<missing>
<missing>
<missing>
<missing>
<missing>
HumidityTime =
2 24
4 48
7 12
9 36
12 0
14 24
16 48
19 12
21 36
24 0

댓글 수: 5

Peng Li
Peng Li 2020년 3월 28일
You question isn’t clear. Without hardcoded value, did you mean that you want to find values between the two numbers you gave?
You humidity time has 10 rows while humidity has 20, it isn’t clear how to match them.
You may want to first convert the humidity string to double using str2double. It will then easier for you to make any math calc.
Walter Roberson
Walter Roberson 2020년 3월 29일
In the special case of string object array, which we can see is present here, then you can use double() instead of str2double()
Zeus
Zeus 2020년 3월 29일
편집: Zeus 2020년 3월 29일
hi thanks ,i realised i made a mistake there
so im supposed to just write the code without checking the data(just call it as it always changes)
i need to store only the values that exceed the threshold and the corresponding times these values are taken at in a ? ×3 vector
so far ive got this :
I may be wrong for using else .
SensorData
Humidity;
HumidityTime;
HumidityAlert= []
n=1
for i= 1:1:length(Humidity)
if (40< Humitiy)&& (Humidity<50)
%something is missing here
else HumidityAlert= [] %not sure if this is correct
end
end
Peng Li
Peng Li 2020년 3월 29일
Again you have 20 rows in humidity data but 10 rows in humidity time. How do they match? If they match by rows, you can use HumidityTime(double(humidity) > 40 & double(humidity) < 50, :) to get the times that humidity meet your defined criterion.
Zeus
Zeus 2020년 3월 29일
so i managed to get them to be equal ,I got rid of the excess <missing> terms by changing my data collection code.
I have tried ur suggestion HumidityTime(double(humidity) > 40 & double(humidity) < 50 and it is not working .Please suggest an alternative
Humidity =
46.8068
42.5006
35.1041
48.0938
45.3460
41.2533
47.9431
37.3616
36.7546
42.3771
HumidityTime =
2 24
4 48
7 12
9 36
12 0
14 24
16 48
19 12
21 36
24 0

답변 (1개)

Mohammad Sami
Mohammad Sami 2020년 3월 30일

0 개 추천

Humidity = str2double(Humidity(~ismissing(Humiditiy)));
lowlimit = 40;
highlimit = 50;
outsidelimit = Humidity > highlimit || Humidity < lowlimit;
alerts = [HumidityTime(outsidelimit,:) Humidity(outsidelimit)];

댓글 수: 2

Zeus
Zeus 2020년 4월 19일
it gives me this when i run .i need to have nx3 matrix in output (hours minutes Humidity)
Humidity =
NaN
outsidelimit =
logical
0
alerts =
0×2 empty double matrix
Walter Roberson
Walter Roberson 2020년 4월 20일
At the time you get that output, what is the string array that you are starting with ?

이 질문은 마감되었습니다.

제품

릴리스

R2019b

질문:

2020년 3월 28일

마감:

2021년 8월 20일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by