發表文章

目前顯示的是 4月, 2023的文章

[鋰電池] 行動電源的電池容量Wh怎麼計算? 能不能帶上飛機? (如何從行動電源的規格看細節)

圖片
最近獻慶的朋友問了些問題, (1) 行動電源的電池容量Wh怎麼計算?  (2) 能不能帶上飛機? 行動電源的電池容量Wh怎麼計算 電池容量或電池能量的瓦時Wh是一個能量單位。表示瓦特W乘以小時h。 電池能量  E , 可由公式 E = P × t 計算得到,其中 P 為功率、 t 為時間。 而功率  P  ,可由公式 P = I × V 計算得到,其中 I 為電流、 V 為電壓。 總和來說,可看為電池能量   E = P × t = I × V × t   很多人看公式就迷路、暈船了,這裡實際算給你看。 案例1 - 規格表有給完整資訊 下圖中,是行動電源規格表裡面,提到電池容量的部分。 行動電源規格表截圖。 從電池容量那一列,可看到容量為12001 ~ 15000 mAh。給出了一個容量的範圍值,但數值來源不明,暫不討論(有人想知道的話,再來說吧)。 在最後一列的商品規格中,可看到 "電芯容量為13400 mAh / 3.6 V (48.24 Wh)"。 "48.24 Wh",看來答案已經都給了。但我們還是要來自己算一下,增加信心。 這裡重新仔細看一下資料。 "電芯"指的就是行動電源裡面放的電池啦! 只是在儲能業界,通常稱電池模組的最小單位為"電芯" 這裡的 "電芯容量為13400 mAh / 3.6 V",表示使用了3.6V的電芯,電芯的總額定容量為13400 mAh。規格表這裡的 "/" 不是指除法,只是分隔符號的概念。 使用公式 E = P × t = I × V × t 來計算容量, V =3.6 V這個有了,但是 I 跟 t 的資訊藏在哪裡? 其實 13400 mAh 應該拆解成 13400 m × A × h 來看,其中 m 表示千分之一、A是電流單位安培、h是時間單位小時。所以  I 跟 t 的資訊被整合在 13400 mAh裡面 (mAh或Ah是儲能業界通用的單位)。 E = P × t = I × V × t = 3.6 V × 13400 mAh = 48240 mAVh = 48240 mWh = 48.24 Wh 得到電池容量48.24 Wh,該值與規格表上給出的數值一致...

[Matlab] Matlab parallel computing 平行運算好用,但仍要注意效率

圖片
Matlab大魔王,相當消耗電腦資源。 只是做個700萬筆資料的Time shift loop,瞬間就吃掉25 GB的RAM。 而且程式等了一小時都還沒好。 需要尋找解決方案。 狀況與問題 只是要處理一下timetable的timeshift問題 處理timetable的timeshift問題的主要 程式碼。 當程式開始執行後,打開Windows的工作管理員來看GPU跟CPU使用率,但數值跳太快了。 所以,看截圖的變化就好。 RAM吃到100%。足足32 GB的RAM被吃光光。 RAM使用了100%,CPU使用率到還好,不到10%。 PS: 還沒有Fortran恐怖! 以前算Eigenvalue and Eigenvector problems時,直接把32 GB的RAM吃完,然後報錯,出error code, 超出記憶體memory exceeded! 解決方案 (Case 1) 使用平行運算parallel computing, 把"for"改成"parfor",重跑程式,就這麼簡單。 如圖所示,使用12個workers,迴圈數為7378891,整個迴圈跑下來共使用時間1477.311617秒。 RAM還是吃到100%,但這次連CPU也吃到100%了。讚! CPU吃到100% 可看到12個"MATLAB R2022b"正在執行中。 還好有使用平行運算,把時間壓縮到25分鐘左右。不然照比例算回去的話,可能需要300分鐘才跑得完。也就是要等5小時了。(我是不考慮再跑個單核來當對照組了,太累了) 確實,平行運算可以提升工作效率。 這台筆電從買來到現在,終於發揮它多核心跟32GB RAM的功能了。GOOD! ^_^ 當然,未來如果經費夠,應該考慮使用桌機或工作站來處理這類事情。否則,程式一跑下去,就要去"泡咖啡"喝下午茶了! ^_^ PS: 平行運算的手段還有很多,這裡只是使用相對簡單的方式去處理問題。針對不同的問題,也有不同的平行運算方式。有興趣的人,可自行深入研究。 平行運算不是萬能 (Case 2) 雖然在上述的工作中,平行運算發揮他的長項,幫我們節省了大量的時間。 但平行運算是不是萬能? 不見得! 例如,下面這段程式,若使用平行運算,花費92秒左右,若沒使用平行運算,則花費72秒左右...