ãã®èšäºã§ã¯ã次ã®è³ªåã«çããŸãã
- éå»3æéã§é¢šã¯ã©ã®æ¹åã«å¹ããŸãããïŒ
- å é±ãæ°æž©ãšé²ç¹ã¯ã©ã®ããã«å€åããŸãããïŒ
- é·éšãè¿ã¥ããšãæ°å§ã¯å®éã«äœäžããŸããïŒ
è°è«ãããŠããåé¡ãéåžžã«åçŽã§ããããšã¯æããã§ããã説æãããŠããææ³ãšã³ãã³ãã¯ãããè€éã§å®éçãªåé¡ã®è§£æ±ºã«åœ¹ç«ã¡ãŸãã
ã¹ããã1ïŒæ°è±¡èŠ³æž¬æã®å Žæ
æåã«ãæ°è±¡ã¹ããŒã·ã§ã³ã®èšçœ®å Žæã決å®ããå¿ èŠããããŸããã é§è»å Žã®æäžéã§è¡ãããšã«ããŸããã å Žæã¯ã倩åã®åœ±é¿ãåããããã«éžæãããŸããããé»åæ©åšãåãä»ããããã®å±æ ¹ããããŸããã æçµçã«ãµãŒãããŒãã£ã®ããŒã¿ã¢ã°ãªã²ãŒã¿ãŒã«ããŒã¿ãæäŸãããã£ããããå ŽæãšããŒããŠã§ã¢ãéžæããéã«ãããèæ ®ããå¿ èŠããããŸããã
![](https://habrastorage.org/files/574/408/735/574408735637416daa6802671e48e7b6.png)
ã¹ããã2ïŒããŒããŠã§ã¢ã®éžæ
éžæããå Žæã¯å»ºç©ã®Wi-Fiç¯å²å€ã§ãã£ããããã¹ããŒã·ã§ã³ããé£æ¥ãã建ç©å ã®åä¿¡æ©ã«ããŒã¿ã転éããæ¹æ³ãèŠã€ããå¿ èŠããããŸããããããè¡ãã«ã¯ãArduino UnoãXBeeé«åºåéä¿¡æ©ã«æ¥ç¶ããŸããã 次ã«ãããŒã¿ã¯å»ºç©å ã«æ¢ã«ããArduino Megaã®XBeeåä¿¡ã¢ãžã¥ãŒã«ã«è»¢éãããŸãã ãã®Arduinoã¯ã€ã³ã¿ãŒãããã«æ¥ç¶ãããããŒã¿ã¯ç¡æã®ããŒã¿éçŽãµãŒãã¹ThingSpeak.comã«éä¿¡ãããŸãã èšçœ®ã«äœ¿çšããæ©åšã®å®å šãªãªã¹ãã以äžã«ç€ºããŸãã
èšåãªã¹ã
- æ°è±¡ã·ãŒã«ããšæ°è±¡ã»ã³ãµãŒãåãã Arduino Uno
- Digi Internationalã®2x XBeeã·ãŒã«ãããã³2x XBeeæ¡åŒµç¯å²ã¢ãžã¥ãŒã«
- ã€ãŒãµãããã·ãŒã«ãä»ãArduino Mega
- 2åã®ArduinoããŠã³ãããã
- Arduinoé»æºçšã®2x 5Vãã©ã³ã¹
- XBeeãã©ã³ã¹ããã¿ãŒãããã°ã©ãã³ã°ããããã®XBee Explorerãã³ã°ã«
![](https://habrastorage.org/files/441/622/277/44162227778743888ac368fd68d19a5b.png)
ã¹ããã3ïŒæ°è±¡ã¹ããŒã·ã§ã³ã®éä¿¡æ©ãæ¥ç¶ããå±å€ã®Arduinoãããã°ã©ã ãã
å€éšã®Arduinoã¯ã¬ã¬ãŒãžã«èšçœ®ããã枬å®å€ãåéããå±å ã®Arduinoã«ããŒã¿ãéä¿¡ããŸãã ãã®äº€æãå®è£ ããããã«ãWeatherã·ãŒã«ããšXBeeã·ãŒã«ãã®ã³ã³ã¿ã¯ããæåã«æ¥ç¶ããŸããã 次ã«ãã·ãŒã«ãã«ä»å±ã®ããã¥ã¡ã³ãã«åŸã£ãŠãXBeeã·ãŒã«ããArduino Unoã«æ¥ç¶ããŸããã XBeeã·ãŒã«ãã«ã¯ãXBeeé«åºåãã©ã³ã·ãŒããŒããããŸãã X-CTUãœãããŠã§ã¢ã䜿çšããŠãç®çã®åä¿¡è ã¢ãã¬ã¹ãããã°ã©ã ããç®çã®ãã¡ãŒã ãŠã§ã¢ãXBeeã·ãŒã«ãã«ããŒãããŸããã 颚éèšãéšé¢šã»ã³ãµãŒã¯ãä»å±ã®RJ-45ã³ãã¯ã¿ã䜿çšããŠãŠã§ã¶ãŒã·ãŒã«ãã«æ¥ç¶ãããŸããã
ã¹ããã4ïŒWeather Station Receiverãšå±å Arduinoããã°ã©ãã³ã°ãæ¥ç¶ãã
å éšArduinoã¯å»ºç©å ã«ãããå€éšArduinoããããŒã¿ãåä¿¡ããããŒã¿ãæ€èšŒããThingSpeakã«éä¿¡ãã圹å²ãæ ããŸããããã¥ã¡ã³ããŒã·ã§ã³ã«ããMega Arduinoã®XBeeã·ãŒã«ãã åã³X-CTUã䜿çšããŠãç®çã®åä¿¡è ã¢ãã¬ã¹ãããã°ã©ã ããç®çã®ãã¡ãŒã ãŠã§ã¢ãXBeeã·ãŒã«ãã«ããŒãããŸããã
次ã«ãArduinoãããã°ã©ã ããŠãXBeeã¡ãã»ãŒãžãåä¿¡ãããã±ããã1åéã«1åã®å²åã§ThingSpeakã«è»¢éããŸãã ThingSpeakã¡ãã»ãŒãžãéä¿¡ããåã«ãã¢ã«ãŠã³ããèšå®ãããã£ãã«ãšå Žæã®æ å ±ãæ§æããŸããã ããŒã¿è»¢éã®ã»ããã¢ãããçµäºãããšããã«ãMATLABã§ããŒã¿ã®åæãéå§ããŸããã
ãã®èšäºã«èšèŒãããŠããåæãåçŸããããã«ãæ©åšãè³Œå ¥ããŠæ§æããå¿ èŠã¯ãããŸãããã¹ããŒã·ã§ã³ã®çŸåšã®ããŒã¿ã¯ãã£ã³ãã«12 397ã§å ¥æã§ããŸãã
ã¹ããã5ïŒè³ªåã«çãã
ThingSpeakããæ°è±¡ããŒã¿ãååŸãã
æåã®2ã€ã®è³ªåã«çããã«ã¯ã次ã®ã³ãã³ãã䜿çšããŸã
å©çšå¯èœãªããŒã¿ãã£ãŒã«ãã衚瀺ããã«ã¯ããã¹ãŠã®ãã£ãŒã«ããåæã«MATLABã«ã€ã³ããŒããã枩床ã湿床ã颚éã颚åã«é¢ããããŒã¿ãå€æ°ã«ä¿åããŸãã ThingSpeakãµããŒãããã¥ã¡ã³ã ãthingSpeakFetch
[d,t,ci] = thingSpeakFetch(12397,'NumPoints',8000); % fetch last 8000 minutes of data
8000ãã€ã³ãã¯ãThingSpeakãäžåºŠã«ãªã¯ãšã¹ãã§ããæ倧ãã€ã³ãæ°ã§ãã 枬å®é »åºŠã§ã¯ãããã¯çŽ6æ¥éã®æž¬å®ã«çžåœããŸãã
tempF = d(:,4); % field 4 is temperature in deg F baro = d(:,6); % pressure in inches Hg humidity = d(:,3); % field 3 is relative humidity in percent windDir = d(:,1); windSpeed = d(:,2); tempC = (5/9)*(tempF-32); % convert to Celsius availableFields = ci.FieldDescriptions'
availableFields = 'Wind Direction (North = 0 degrees)' 'Wind Speed (mph)' '% Humidity' 'Temperature (F)' 'Rain (Inches/minute)' 'Pressure ("Hg)' 'Power Level (V)' 'Light Intensity'
芳枬æéã®åºæ¬çãªçµ±èšã®èšç®ãšãã®èŠèŠå
ããŒã¿ãããããç解ããããã«ãã€ã³ããŒãããããŒã¿ã®æå°å€ãæ倧å€ãå¹³åå€ãèŠã€ããæ倧å€ãšæå°å€ã®æéãèŠã€ããŸããããã«ãããæ°è±¡èŠ³æž¬æããã®ããŒã¿ãè¿ éã«æ€èšŒã§ããŸãã
[maxData,index_max] = max(d); maxData = maxData'; times_max = datestr(t(index_max)); times_max = cellstr(times_max); [minData,index_min] = min(d); minData = minData'; times_min = datestr(t(index_min)); times_min = cellstr(times_min); meanData = mean(d); meanData = meanData'; % make column vector summary = table(availableFields,maxData,times_max,meanData,minData,times_min) % display
summary = availableFields maxData times_max ____________________________________ _______ ______________________ 'Wind Direction (North = 0 degrees)' 338 '10-Jul-2014 05:01:32' 'Wind Speed (mph)' 6.3 '10-Jul-2014 12:47:14' '% Humidity' 86.5 '15-Jul-2014 04:51:24' 'Temperature (F)' 96.7 '12-Jul-2014 16:28:55' 'Rain (Inches/minute)' 0.04 '15-Jul-2014 13:47:13' 'Pressure ("Hg)' 30.23 '11-Jul-2014 09:25:07' 'Power Level (V)' 4.44 '10-Jul-2014 10:25:01' 'Light Intensity' 0.06 '12-Jul-2014 13:23:38' meanData minData times_min _________ _______ ______________________ NaN 0 '10-Jul-2014 04:54:32' 3.0272 0 '10-Jul-2014 01:33:14' 57.386 25.9 '12-Jul-2014 13:39:39' 80.339 69.6 '11-Jul-2014 06:59:54' 5.625e-05 0 '10-Jul-2014 01:02:11' 30.04 29.78 '15-Jul-2014 13:04:08' 4.4149 4.38 '11-Jul-2014 09:22:06' 0.0092475 0 '10-Jul-2014 01:02:11'
æ倧æ°å§40æ°å§ãæ倧枩床1700床ãªã©ã®äºæããªãå€ãåŸãããå Žåã¯ãããŒã¿ãééã£ãŠãããšæ³å®ã§ããŸãã ãã®ãããªãšã©ãŒã¯ãäŒéãšã©ãŒãé»å§ãµãŒãžãªã©ã®çç±ã§çºçããå¯èœæ§ããããŸãã èšäºã®æåŸã«ããã®ãããªãå€ãå€ããåŠçããæ¹æ³ãããã€ã瀺ããŸãããã¢ããããŒããããããŒã¿ã«ã€ããŠã¯ããã®ã¬ããŒããå ¬éããããšãã«ãã¹ãŠãæ£åžžã«èŠããŸãã
äžèšã®ã³ãŒãã§ã¯ãMATLAB R2013bã§æåã«å°å ¥ããã衚圢åŒã®ããŒã¿åã䜿çšããŸããããã®ããŒã¿åã®è©³çŽ°ã«ã€ããŠã¯ã ããã°ãšã³ããªãåç §ããŠãã ããã
éå»3æéã®é¢šã®å¯èŠå
æ°è±¡ã¹ããŒã·ã§ã³ã¯1åã«1åçšåºŠã®æ°è±¡ã¬ããŒããåä¿¡ãããããéå»180åãèŠãŠéå»3æéã®é¢šã«ã€ããŠã®è³ªåã«çããMATLABã®ã³ã³ãã¹ããããã䜿çšããŠé床ãšæ¹åã確èªããŸããèå³æ·±ãæã«é¢šã ããã¯ãåïŒ0床ïŒãå³åŽã«ããã床ãåæèšåãã«å¢å ããæ°åŠã³ã³ãã¹ã§ãã 90床ã¯æ±ïŒäžïŒã180床ã¯åïŒå·ŠïŒã270床ã¯è¥¿ïŒäžïŒãè¡šããŸãã é·éšãŸãã¯æ£é¢ééäžã«ãŠã£ã³ãã·ã¢ããªãå Žåãã³ã³ãã¹ã¯ãååãšããŠãã°ã©ãäžã®é«å¯åºŠã®ç¢å°ã§ç€ºãããã颚ã®åªå æ¹åã瀺ããŸãã ãã®äŸã§èŠæ±ãããããŒã¿ã®å Žåãäž»ã«ãã¥ãŒã€ã³ã°ã©ã³ãã®å€æéã«å žåçãªåããã³å西ãã颚ã®æ¹åã芳å¯ããŸãã
figure(1) windDir = windDir((end-180):end); % last 3 hours windSpeed = windSpeed((end-180):end); rad = windDir*2*pi/360; u = cos(rad) .* windSpeed; % x coordinate of wind speed on circular plot v = sin(rad) .* windSpeed; % y coordinate of wind speed on circular plot compass(u,v) titletext = strcat(' for last 3 hours ending on: ',datestr(now)); title({'Wind Speed, MathWorks Weather Station'; titletext})
![](https://habrastorage.org/files/d1a/cb5/7c7/d1acb57c7dbf41fcb3a94288bf83664e.png)
é²ç¹èšç®
ããã§ã枩床ãšé²ç¹ãã©ã®ããã«å€åãããã«ã€ããŠã®2çªç®ã®è³ªåã«çããæºåãã§ããŸããã
å é±ãé²ç¹ã¯ã空æ°ïŒå·åŽããå ŽåïŒãæ°Žèžæ°ã§é£œåãã枩床ã§ãã æ°å£ã®æ¹¿åºŠãé«ãã»ã©ãé²ç¹ãé«ããªããŸãã é²ç¹ã¯ãäžå¿«æã®å°ºåºŠãšããŠäœ¿çšãããããšããããŸãã é²ç¹ã65床ïŒ+ 18CïŒãè¶ ãããšãå€ãã®äººã空æ°ããã¹ãã€ãããšèšãå§ããŸãã 70ã®é²ç¹ã§ã¯ãå€ãã®äººãäžå¿«ã«æããŸãã 以äžã«ç€ºãããã«ãæ¹çšåŒãšå®æ°ã䜿çšããŠãé²ç¹ã®äžè¬çãªæšå®å€TDPãèŠã€ããããšãã§ããŸãã
![](https://habrastorage.org/files/f6c/8f5/f70/f6c8f5f70d3a43fbadac9c177a5699bc.png)
ã©ãã§
![](https://habrastorage.org/files/098/d82/c18/098d82c189ef4a8db105c104abb6da14.png)
ãš
![](https://habrastorage.org/files/119/9ea/eaa/1199eaeaa98d412fb461df84a013dcb4.png)
ããŠãäžèšã®æ¹çšåŒãMATLABã³ãŒããšããŠæžããã®ã§ã次ã®ããšãã§ããŸãã
b = 17.62; c = 243.5; gamma = log(humidity/100) + b*tempC ./ (c+tempC); tdp = c*gamma ./ (b-gamma); tdpf = (tdp*1.8) + 32; % convert back to Fahrenheit
枩床ã空æ°æ¹¿åºŠãé²ç¹å¯Ÿæéã®èŠèŠå
é²ç¹ãèšç®ããã®ã§ãããŒã¿ãèŠèŠåããéå»5æ¥éãŸãã¯6æ¥éã®æåã芳å¯ããæºåãã§ããŸããã
figure(2) [ax, h1, h2] = plotyy(t,[tempF tdpf],t,humidity); set(ax(2),'XTick',[]) set(ax(2),'YColor','k') set(ax(1),'YTick',[0,20,40,60,80,100]) set(ax(2),'YTick',[0,20,40,60,80,100]) datetick(ax(1),'x','keeplimits','keepticks') set(get(ax(2),'YLabel'),'String',availableFields(3)) set(get(ax(1),'YLabel'),'String',availableFields(4)) grid on legend('Location','South','Temperature','Dew point', 'Humidity')
![](https://habrastorage.org/files/741/358/715/7413587157124fdabd73d18601592434.png)
å žåçãªé±ã®éã«ã枩床ãšæ¹¿åºŠã®æ¯æ¥ã®å€åãã¯ã£ãããšèŠãããšãã§ããŸãã äºæ³éããçžå¯Ÿæ¹¿åºŠã¯å€ïŒæž©åºŠãé²ç¹ãŸã§äžããïŒã«äžæããåŸåããããéåžžã¯ååŸã«æé«æž©åºŠã«éããŸãé²ç¹æž©åºŠã¯æ°å£ã®æ¹¿åºŠã瀺ããŸãã ãã®äŸã®å ¬éçšã«ããŒã¿ãåéãããšãé²ç¹ã70床ãè¶ ããŠããããšãããããŸããããã¯ããã¥ãŒã€ã³ã°ã©ã³ãã®å€ã®æããŠèžãæãæ¥ã®å žåçãªäŸã§ããæ°è±¡èŠ³æž¬æã«ãã£ãŠå ±åãããææ°ã®ããŒã¿ãã©ã®ããã«èŠæ±ãããã«ã€ããŠã
ãã¥ãŒã€ã³ã°ã©ã³ãã®éšã®æ¥ã®æ°è±¡ããŒã¿ã®åä¿¡ãšåŠç
ç§ãã¡ãçãããã£ãæåŸã®è³ªåã¯-éšã®åã«æ°å§ãæ¬åœã«äžããã®ãïŒ ãããè¡ãããã«ãæåãªéšã®æ¥ã®æ°è±¡èŠ³æž¬æããããŒã¿ãåãåããŸããã ä»åã¯ãæ°å§ãšéæ°Žéã«èå³ããããŸãã æºæ¯ã«ãªããšç©ºã«ãªãèªå·±æåºã»ã³ãµãŒã䜿çšããŸããã 0.01ã€ã³ãã®éæ°Žéãéããšãã»ã³ãµãŒãå転ããŠç©ºã«ãªããArduinoã³ãŒãã1åãããã®ç©ºã®æ°ãã«ãŠã³ãããé©åãªééšå€ãThingSpeakã«éä¿¡ããŸãã MATLABã䜿çšããŠããŒã¿ãã1æéããšã®ãµã³ãã«ããµã³ããªã³ã°ããéæ°Žéãšå§åã®åŸåã®èç©ãç°¡åã«ç¢ºèªã§ããããã«ããŸãã
[d,t,ci] = thingSpeakFetch(12397,'DateRange',{'6/4/2014','6/6/2014'}); % get data baro = d(:,6); % pressure extraData = rem(length(baro),60); % computes excess points beyond the hour baro(1:extraData) = []; % removes excess points so we have even number of hours rain = d(:,5); % rainfall from sensor in inches per minute
6æ5æ¥ã«æ¬åœã«éšãéã£ãŠããŸãããïŒ æ倧å€ã¯0.01ã€ã³ããããªããããããŒã¿è»¢éã®1åããšãèŠãã ãã§ã¯èšãã«ããã§ãã ãããã6æ5æ¥ã®ãã¹ãŠã®ééšéãèŠçŽãããšã0.48ã€ã³ãã®éšãéã£ãããšãããããŸããããã¯ãå¹³åæé3.68ã€ã³ãã®13ïŒ ã§ããã®æ¥ã¯æ¬åœã«éšãå€ãããšã瀺ããŠããŸãã æ倧ééšéããã€äœäžããããããããç解ããããã«ã以äžã«ç€ºãããã«ãããŒã¿ãæéããšã®ããŒã¿ã«å€æããŸããã
rain(1:extraData) = []; t(1:extraData) = []; rainHourly = sum(reshape(rain,60,[]))'; % convert to hourly summed samples maxRainPerMinute = max(rain) june5rainfall = sum(rainHourly(25:end)) % 24 hours of measurements from June 5 baroHourly = downsample(baro,60); % hourly samples timestamps = downsample(t,60); % hourly samples
maxRainPerMinute = 0.0100 june5rainfall = 0.4800
æéããšã®ã¯ã©ãŠãããã³æ°å§ããŒã¿ã®èŠèŠåãšæ°å§åŸåã®æ€åº
ããŒã¿ãååŠçããåŸãããããèŠèŠåããæºåãæŽããŸããã ããã§ã¯ãMATLABã䜿çšããŠãæ°å§ããŒã¿ã«å¯ŸããåŸåç·ãèŠã€ããŸãã ãããããããšã豪éšã®åã«å§åãäœäžããŸããïŒ
figure(3) subplot(2,1,1) bar(timestamps,rainHourly) % plot rain xlabel('Date and Time') ylabel('Rainfall (inches /per hour)') grid on datetick('x','dd-mmm HH:MM','keeplimits','keepticks') title('Rainfall on June 4 and 5') subplot(2,1,2) hold on plot(timestamps,baroHourly) % plot barometer xlabel('Date and Time') ylabel(availableFields(6)) grid on datetick('x','dd-mmm HH:MM','keeplimits','keepticks') detrended_Baro = detrend(baroHourly); baroTrend = baroHourly - detrended_Baro; plot(timestamps,baroTrend,'r') % plot trend hold off legend('Barometric Pressure','Pressure Trend') title('Barometric Pressure on June 4 and 5')
![](https://habrastorage.org/files/48a/80a/a66/48a80aa664304ec0bd1a31b65b074e97.png)
ãã®ããŒã¿ãèŠèŠåããåŸåã確èªãããšãéæ°Žåã«æ°å§ãæ¬åœã«äœäžããŠããããšãã¯ã£ãããšããããŸãã
ç¡å¹ãªæž¬å®å€ããããŒã¿ãæ¶å»ãã
質åã¯éåžžã«ç°¡åã§ããããå©çšå¯èœãªããŒã¿ã«åé¡ãããå ŽåããããŸãã ããšãã°ã5æ30æ¥ã«æž©åºŠã«é¢ããããã€ãã®èª€ã£ãããŒã¿ãèšé²ããŸããã MATLABã䜿çšããŠãã£ã«ã¿ãŒåŠçããæ¹æ³ãèŠãŠã¿ãŸãããã
[d,t] = thingSpeakFetch(12397,'DateRange',{'5/30/2014','5/31/2014'}); rawTemperatureData = d(:,4); newTemperatureData = rawTemperatureData; minTemp = min(rawTemperatureData) % wow that is cold!
minTemp = -1.7662e+03
ãããå€ãã£ã«ã¿ãŒã䜿çšããŠããŒã¿ã¹ãã€ã¯ãåé€ãã
ãããå€ãã¹ãã«åæ Œããªãã£ãã¢ã€ãã ãåé€ããŸãã ãã®å Žåãè¯æ°-1766床ãªã©ãæããã«ä¿¡é Œã§ããªãå€ãããã€ããããŸãã ãããã£ãŠã0ã120ã®æž©åºŠå€ã®ã¿ãå«ãããŒã¿ã䜿çšã§ããŸããããã¯ããã¥ãŒã€ã³ã°ã©ã³ãã®æ¥ã®æ¥ã«èš±å®¹ãããå€ã§ãã
tnew = t'; outlierIndices = [find(rawTemperatureData < 0); find(rawTemperatureData > 120)]; tnew(outlierIndices) = []; newTemperatureData(outlierIndices) = [];
ã¯ãªãŒã³ã¢ããããããœãŒã¹ããŒã¿ãããããããŸãã
figure(4) subplot(2,1,2) plot(tnew,newTemperatureData,'-o') datetick xlabel('Time of Day') ylabel(availableFields(4)) title('Filtered Data - outliers deleted') grid on subplot(2,1,1) plot(t,rawTemperatureData,'-o') datetick xlabel('Time of Day') ylabel(availableFields(4)) title('Original Data') grid on
![](https://habrastorage.org/files/673/bd5/27e/673bd527ee0c4f2e8429147f3b9a0d4b.png)
ã¡ãã£ã¢ã³ãã£ã«ã¿ãŒã䜿çšããŠç¡å¹ãªããŒã¿ãåé€ãã
äžè¯ããŒã¿ãåé€ããå¥ã®æ¹æ³ã¯ãã¡ãã£ã¢ã³ãã£ã«ã¿ãŒãé©çšããããšã§ãã ã¡ãã£ã¢ã³ãã£ã«ã¿ãŒã¯ãããŒã¿ã»ããã«é¢ããç¥èãããã»ã©å¿ èŠãšããŸããã æè¿åã®äžå€®ã®å€åŽã«ããå€ãåçŽã«åé€ããŸãã çµæã®ãã£ã«ã¿ãªã³ã°ã¯ãããŒã¿ãã€ã³ãã®åé€ãšã¯å¯Ÿç §çã«ãå ãšåãé·ãã®ãã¯ãã«ã§ãããããŒã¿ã®ã£ãããšã¬ã³ãŒãã®ççž®ã«ã€ãªãããŸãã ãã®ã¿ã€ãã®ãã£ã«ã¿ãŒã¯ãä¿¡å·ãããã€ãºãé€å»ããããã«ã䜿çšã§ããŸãã
n = 5; % this value determines the number of total points used in the filter
nã®å€§ããªå€ã¯ãæ¯èŒã®ããã®ãé£æ¥ãã®æ°ã瀺ããŸãã 1åã«1ååéããã枩床ã§ã¯ãn = 5ãéžæããŸããããã¯ãéåžžã枩床ã5å以å ã«å€§å¹ ã«å€åããªãããã§ãã
f = medfilt1(rawTemperatureData,n); figure(5) subplot(2,1,2) plot(t,f,'-o') datetick xlabel('Time of Day') ylabel(availableFields(4)) title('Filtered Data - using median filter') grid on subplot(2,1,1) plot(t,rawTemperatureData,'-o') datetick xlabel('Time of Day') ylabel(availableFields(4)) title('Original Data') grid on
![](https://habrastorage.org/files/cbd/321/a66/cbd321a662184f60b85ea1af93d3bea3.png)
ãããã«
ããã§ãæ°è±¡èŠ³æž¬æããã®ããŒã¿ãåæãã質åã«çããŸããã
ãŸããåææ€èšŒã«åæ ŒããªãããŒã¿ã®ãã£ã«ã¿ãªã³ã°æ¹æ³ãããã€ã瀺ããŸããã
ãã®èšäºã§æèµ·ããã質åã¯åæ©çã§ãããäœåãã®ã¹ããŒã·ã§ã³ããããŒã¿ãåéããããšã§äœãéæã§ããããèããŠãã ããã ããã«ãç£æ¥ã·ã¹ãã ããã³ç§åŠã·ã¹ãã ã®ãªã¢ã«ã¿ã€ã ã®å€åã枬å®ããã³åæããããŒã¿ã«åºã¥ããŠææ決å®ãè¡ãããšãã§ããŸãã
ãã®èšäºã«èšèŒãããŠããåæãåçŸããããã«ãæ©åšãè³Œå ¥ããŠæ§æããå¿ èŠã¯ãããŸããã ã€ã³ã¹ããŒã«ã®ã©ã€ãããŒã¿ã¯ãThingSpeak.comã®ãã£ã³ãã«12 397ã§å ¥æã§ããŸãã
MATLABãããžã§ã¯ãã³ãŒã