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 Commenti

Peng Li
Peng Li il 28 Mar 2020
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.
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 il 29 Mar 2020
Modificato: Zeus il 29 Mar 2020
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 il 29 Mar 2020
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.
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

Risposte (1)

Mohammad Sami
Mohammad Sami il 30 Mar 2020
Humidity = str2double(Humidity(~ismissing(Humiditiy)));
lowlimit = 40;
highlimit = 50;
outsidelimit = Humidity > highlimit || Humidity < lowlimit;
alerts = [HumidityTime(outsidelimit,:) Humidity(outsidelimit)];

2 Commenti

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
At the time you get that output, what is the string array that you are starting with ?

Questa domanda è chiusa.

Prodotti

Release

R2019b

Richiesto:

il 28 Mar 2020

Chiuso:

il 20 Ago 2021

Community Treasure Hunt

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

Start Hunting!

Translated by