模擬生成一天溫度資料,精確到秒

2022-03-04 19:43:15 字數 3249 閱讀 4841

做一套養殖過程管理的系統,有養殖環境資料採集功能,硬體不到位,需要給相關ld演示,要求資料盡量真實。這就需要模擬生成一天的溫度資料。

解決方案1:

指定範圍隨機數溫度生成

結果就是這樣了。。。太假。。。

解決方案2:

**連續隨機數生成:

$wd_arr = array();	// 溫度

//-------------溫度--------------

// 生成連續的溫度隨機數

$wd_start = 21.6;

$max_wd = 22.6; //最高溫度22.6

$min_wd = 7.1; // 最低溫度7.1

$start_offset_wd = 5*60*2; // 從5點開始

$wd_diff = $max_wd - $min_wd; // 溫度差

$wd_change_prob = 0.1; // 溫度變化概率

// 模擬一天的氣溫,2880為每半分鐘採集一次

$wd_arr[$start_offset_wd] = $min_wd;

$wd_inte1 = getrandfw( (14-5)*60*2, $wd_diff ); // 第一段的區間

$wd_inte2 = getrandfw( (21-14)*60*2, $wd_diff * 0.9 ); // 第二段的區間

$wd_inte3 = getrandfw( (24-21 + 5)*60*2, $wd_diff * 0.1 ); // 第三段的區間

// 模擬生成資料

for($i=1; $i<=24*60*2; $i++)

// 公升溫

$rd = 0;

if($is_change)

$wd_arr[$start_offset_wd + $i] = $wd_arr[$start_offset_wd + $i - 1] + $rd;

} else if ( ($start_offset_wd + $i > 14*60*2) && ($start_offset_wd + $i < 21*60*2) )

// 降溫

$rd = 0;

if($is_change)

$wd_arr[$start_offset_wd + $i] = $wd_arr[$start_offset_wd + $i - 1] - $rd;

} else

$index = $start_offset_wd + $i;

$index > 24*60*2 ? $index-=(24*60*2+1) : $index=$index;

// 降溫

$rd = 0;

if($is_change)

// 大於2880

$index = $start_offset_wd + $i;

$index > 24*60*2 ? $index-=(24*60*2+1) : $index=$index;

//echo $index." --- ";

$index != 0 ? $wd_arr[$index] = $wd_arr[$index-1] - $rd : $wd_arr[$index] = $wd_arr[24*60*2] - $rd;

//echo $wd_arr[$index]."

"; //$wd_arr[$index] = $wd_arr[$index-1] + $rd;

}date_default_timezone_set('prc');

for($i=0; $i<24*60*2; $i++ )

/* * 根據溫度差和時間範圍確定變化率和範圍

* @ 時間差

* @ 溫度差

* */

function getrandfw($time_diff, $wd_diff)

效果也不盡如人意。。。

解決方案3:

使用真實離散溫度 -》 生成平滑曲線 -》 生成秒級資料

第一步:去中國天氣網找當地附近一天的真實溫度資料,可惜只有24小時,溫度值還是整數。。。還是整數。。。還是整數。。。

第二步:輸入到excel中,適當的手工和修改一下小數點後的資料,模擬畫個圖,基本真實吧。

第三步:在excel中,將0、1、2、替換成一天的秒數,為了連續,將首位從1開始

第四步,安裝此函式繪圖神器,origin pro,將excel中的資料粘至次神器中,選中a b列並畫直線。

第五步:根據曲線,生成,每秒的資料。(拿箭頭工具選中曲線,然後操作一下選單)

要生成86400個點,如圖:

此時又出現兩列新的資料,這兩列資料就是我們要的每秒的溫度值。

將新生成的這兩列數,粘如excel中,round一下,繪圖,和原圖一致,但得到了精確到秒的一天的溫度資料。

問題:得到的溫度曲線還是有點太「光滑了」,使用隨機數波動一下效果也不靠譜。

哪位有更好的模擬方法、精確的模擬演算法、更真實的模擬結果 或者 直接有精確到秒的溫度資料 更或者,直接有我這個問題的解決方案,可以給在下指點一二。

續:使用中又發現一利器,資料點隨意拖動啊!!!太實用了!!!

MYSQL 比前一天高的溫度

給定乙個weather表,編寫乙個 sql 查詢,來查詢與之前 昨天的 日期相比溫度更高的所有日期的 id。例如,根據上述給定的weather 返回如下 id 解法一 使用to days to days date select w1.id from weather w1,weather w2 whe...

打卡第一天 模擬退火

找個地方幫自己mark一下 打卡 我昨天計畫在今天看遺傳演算法,但是翻開黃書發現,現代優化演算法這一章節裡,模擬退火排在遺傳的前面。所以今天就先學模擬退火了。在這之前要提一下什麼是現代優化演算法,這個問題會涉及到複雜度 什麼是nph問題 區域性最優與全劇最優,我把查的資料都整理到了一起,在截圖裡面。...

一天一小步 我學C 入門精典 第一天

我看 入門精典第三版 之第一天 學c 也有一段時間了,但是一直都是渾渾噩噩的學,從沒有對自己學的東西做過系統的總結,因此感覺自己總是在乙個台階上上不去,除了經驗外,那就是學習能力了.所以我希望想做好程式設計師首先要做要學會的就是學會學習.我的學習方式就是一步乙個腳印,爭取能反學過的東西牢牢的掌握.下...