發表文章

[Excel] 外商必備換算工具-日期週數轉換

圖片
之前寫了一篇文章介紹如何把週數轉換成對應的月份,這次要來更完整的換算了! 換算的工具還是使用Excel,畢竟他還是目前企業普遍使用的文書處理工具。 假設今天日期為2020/12/25要怎麼把它換成週數呢?去查日曆的話,就會知道這天是在2020年的第52週的星期一,外商大多會簡潔表示就會變成"2052.5",那要怎麼把日期換算成週數呢? 如果A2格填的是日期,那在A3格輸入以下算式,就可以作轉換了! =RIGHT(YEAR(A2),2)&IF(WEEKNUM(A2,2)<10, TEXT(WEEKNUM(A2,2),"00"),WEEKNUM(A2,2))&"."&WEEKDAY(A2,2) 那這這個算式要怎麼解讀呢? 2052.1:主要分成四個部分,"20", "52", ".", "5",他們之間用"&"符號來連接, "&"符號在Excel是用來連結字串。 RIGHT(YEAR(A2),2): 這個式子會產出"20"這個數字,函式意思是把A2的日期用YEAR函式把年份取出,也就是2020年,但是我們只要取2020年最後面的20來表示就好,所以就用RIGHT函式來擷取2020這個數字的最右邊兩個數字,RIGHT函式裡面的2,就是表示取兩個數字! IF(WEEKNUM(A2,2)<10, TEXT(WEEKNUM(A2,2),"00"),WEEKNUM(A2,2)): 這個式子會產出“52”這個數字,也就是日期的週數,只不過為了維持週數的表示都有兩個位數,多用了IF這個函式來判斷週數為個位數還是雙位數。比方說第一週,我們希望它顯示01而非1。 WEEKDAY(A2,2):這個式子就單純許多了,他就是在算日期會是在星期幾。 但是,有時候還是會需要由週數知道對應的日期為多少,假設我們要把A4格裡的2052.5轉乘日期的話,這時候相反的換算就可以用下面這個式子: =DATE(2000+LEFT(A3,2),1,1)+7*(MID(A3,3...

[Matlab / Octave] 數據化圖片資料

圖片
假設你手邊只有資料的圖片檔, 要如何單從圖檔取出圖檔內的數據呢? 這邊使用上方的圖,來做說明。現在有一張LED 的電流對流明的關係圖, 假設想從裡面取出250安培的電流會對應多少流明的資料, 要怎麼做? 接下來使用的方法, 只限制在當x和y軸都是線性坐標的情況才能使用, 若是對數或指數座標就不適用了。 主要的指令會是 [x,y] = ginput(n) ginput會回傳n次你在圖形物件上用滑鼠點的n個座標x跟座 標y,想在點選n次前就結束的話,可以按return鍵結束。 display('press max x and min y'); [pixel_maxx, pixel_miny]=ginput(1); max_x=input('max_x='); min_y=input('min_y='); display('press min x and max y'); [pixel_minx, pixel_maxy]=ginput(1); min_x=input('min_x='); max_y=input('max_y=‘); 剛開始必須先定義圖形物件的座標範圍。 第一步,先點選圖片中x最大y最小的座標點(下圖紅圈圈處): 然後輸入x軸最大值:3000,和y軸最小值:0。 第二步則是要點選圖片中x最小y最大的座標點(下圖紅圈圈處): 然後輸入x軸最小值:0,和y軸最大值:800。 輸入完,接下來會由下方程式碼計算, 剛剛在圖片裡點到的pixe l位置轉換成圖片座標的比例。 pixel_originx=pixel_minx; pixel_originy=pixel_miny; x_ratio=(max_x-min_x)/(pixel_ maxx-pixel_minx); y_ratio=(max_y-min_y)/(pixel_ maxy-pixel_miny); 接著要開始點選圖片上的資料了(這邊以5個資料點舉例), 可以選擇自己需要多少點來完成資料的截取,輸入完多少資料...

Matlab 監測程式執行的狀態條(progress Bar)

圖片
處理大量資料時,當程式需要一定的時間去讀取資料跟計算資料時,有一個狀態bar能夠顯示目前的程式進展的進度,其實還蠻方便的。 這邊會使用到的function是"waitbar" f = waitbar(x,msg) waitbar這個指令會回傳一個圖形物件並傳給參數"f";"x"是小於1的整數,會用來顯示bar的進度百分比;"msg" 則是要顯示在圖形物件上的資訊,其格式可以是字串或character。 waitbar( x, f ,msg ) 這個指令多了一個輸入參數"f",表示要更新的圖形物件是哪個,其他"x"跟"msg"的功能就跟上面講的一樣! 下面的範例,假設程式總共分成四個部分: 讀檔 計算資料 畫圖 存檔 function MyWaitbar FileNumber=10; f = waitbar(0,'Load data!'); for i=1:FileNumber     waitbar( 0+(i/FileNumber)*0.25, f, [ 'Load files ' num2str(i) '/'  num2str(FileNumber) ]);     pause(.5); end waitbar(.5,f,'Calculating data'); pause(1) waitbar(.75,f,'Plotting'); pause(1) waitbar(1,f,'Saving files'); pause(1) close(f) end 下面就是程是跑出來的圖囉!