Bibliography Reference Manager

ผมใช้ LaTeX มาตั้งแต่ปี ค.ศ. 1999 ซึ่งนานมากแล้ว ไม่เคยคิดกลับไปใช้ Word Processor เขียนเอกสารวิชาการ ปัญญหาอันหนึ่งของผู้ใช้ LaTeX ในการอ้างอิงเอกสารอื่น ๆ นั้นคือจะเขียนตามใจชอบไม่ได้ (ฮา) มันจะต้องมีรูปแบบชัดเจน (เนื่องจากไม่เคยใช้โปรแกรมพวก EndNote หรือ Zotero เลยไม่ขอเปรียบเทียบนะครับ) และในการเปลี่ยนรูปแบบของการอ้างอิงทำตามใจชอบไม่ได้เพราะเดี๋ยวทั้งเอกสารมันจะไม่เหมือนกัน สำหรับ LaTeX เรื่องพวกนี้ก็แค่เปลี่ยน Bibliography style ยิ่งถ้าใช้ Natbib แล้วหล่ะก็ยิ่งง่ายใหญ่

การสร้าง BibTeX จาก text file นั้น ถึงแม้ไม่มีอะไรยาก แต่ก็ไม่ต่างอะไรกับก้นที่เป็นริดสีดวง ดังนั้นโปรแกรมพวก Bibliography Reference Manager นั้นจึงมีบทบาทมาก ๆ (สำหรับพวกที่ใช้โปรแกรมจำพวก Lotus Note นั้นก็สามารถเขียนโปรแกรมให้รองรับการทำงานพวกนี้ได้ง่าย ๆ และใช้ร่วมกันเป็นหมู่คณะได้อย่างไม่มีปัญหา สั่งให้มัน export ไฟล์ BibTeX ได้ทุกที่ทุกเวลา)

สำหรับผมแล้วผมมีไฟล์ BibTeX ขนาดใหญ่ 703 kB ใช้คนเดียว (เนื่องจากไม่ใหญ่มากเวลาเขียนเอกสารหลายคนก็คัดลอกส่งไปให้คนอื่นได้ ไม่มีปัญหา (จริง ๆ แล้วไม่จำเป็นต้องส่ง bib ไฟล์ ให้ส่ง bbl ไฟล์ไปก็พอ) ถ้าทำงานข้ามเครื่องก็ใส่ไฟล์ลงไป Dropbox สบายมาก) และเนื่องจากมีเอกสารเป็น pdf เยอะมาก ดังนั้นโปรแกรมที่ใช้จำเป็นต้องมีความสามารถเชื่อมต่อกับ pdf ไฟล์ที่เก็บไว้ในเครื่อง เรียกดูเมื่อไหร่ก็ได้ นอกจากนั้นผมไม่ใช่คนขี้เกียจพิมพ์ และมีรูปแบบของสร้าง BibTeX Key ที่แน่นอนตายตัว กล่าวคือ อักษรสองตัวหน้าของนามสกุลผู้เขียนต่อกันแล้วตามด้วยเลขสองตัวหลังของปีที่ตีพิมพ์ ความสามารถในการลากแล้วแปะจากเว็บไซต์จึงเป็นเรื่องไร้สาระสำหรับผม แต่แน่นอนความสามารถในการเชื่อมต่อกับฐานข้อมูลนั้นจำเป็นต้องมี

เขียนมาซะยาว แค่อยากจะบอกว่าผมเลือกใช้ JabRef นั่นเอง เมื่อก่อนใช้ BibTeXMng ตอนหลังไม่ฟรี เลยไปใช้ BibDB แล้วก็มาเป็น JabRef ใช้มาตั้งแต่เวอร์ชัน 1 กว่า ๆ โน่น

Jabref นั้นใช้ง่ายมาก ๆ ตัวโปรแกรมเป็น Java มีบนทุก OS มีข้อจำกัดแค่เรื่องต้องพิมพ์เอง ถ้าข้อมูลที่ต้องการไม่ได้มาจากฐานข้อมูลหลัก ๆ ของโลกซึ่งปัจจุบันมีให้เยอะพอสมควร และเรื่องของการใช้งานหลายคน แต่นอนฐานผู้ใช้ค่อนข้างน้อยเพราะมันจำกัดจำนวนผู้ใช้เป็นซับเซ็ตของจำนวนผู้ใช้ LaTeX อยู่แล้ว

การใช้งานนั้น ตัวโปรแกรมสามารถสร้างกลุ่มของเอกสารอ้างอิงได้โดยการใส่เป็น Tag ดังนั้นเราสามารถสร้างกลุ่มย่อยในกลุ่มใหญ่ได้ แค่ไม่ขี้เกียจเวลาสร้างบทความวิชาการใหม่ จะอ้างอิงอันไหนก็แค่เสียเวลามาสร้างกลุ่มของเอกสารเท่านั้น ทั้งนี้เพื่อประโยชน์ในการคัดลอก bib ไฟล์ให้มีขนาดเล็กลง รุ่นหลัง ๆ สามารถแสดงผลเป็น Unicode ได้ จึงใช้กับภาษาที่ไม่ใช่ภาษาอังกฤษ รวมทั้งภาษาไทยได้ นอกจากนั้นตัวโปรแกรมยังมีความสามารถในการค้นหาไฟล์ pdf ที่มีชื่อตรงกับ BibTeX Key ได้ (อาจจะช้าหน่อยถ้ากำหนดโฟลเดอร์ไม่ดี เป็นคุณสมบัติสำคัญที่ทำให้ผมเลือกใช้) ทำให้อยากเรียกดูไฟล์เืมื่อไหร่ก็กดดูเอาจากโปรแกรมได้เลย สะดวกมาก

สำหรับผู้ที่ต้องการใช้งานเป็นหมู่คณะ ก็ให้รอเวอร์ชันถัด ๆ ไปนะครับ วันนี้ลาไปก่อน

Multi-sine signal with Matlab

ผมมักมีปัญหาเรื่องการใ้ช้คำสั่งของ Matlab อยู่เนือง ๆ เนื่องจากนาน ๆ จะใช้คำนั้น ๆ ทีนึง ส่วนใหญ่เปิดคู่มือดูก็รู้เรื่องเข้าใจ มีอยู่คำสั่งหนึ่งใช้ทีไรปวดหัวทุกที นั่นคือคำสั่ง idinput เพื่อใช้ในการสร้างสัญญาณ Multi-sine ซึ่งสัญญาณนี้สามารถแสดงได้ดังสมการต่อไปนี้

u(k) = A\displaystyle{\sum^d_{i=1}\sin(\omega k+ \phi_i)}

ในการสั่งงาน Matlab เราต้องมั่นใจว่าย่านความถี่ของสัญญาณที่เราเลือกนั้นมันตรงตามที่เราต้องการหรือไม่ ซึ่งทำได้โดยการแสดง Power spectrum ของสัญญาณ $$u(k)$$ ตรงนี้ใช้ทีไรก็ลืมทุกที คำสั่ง Matlab นั้นสั่งดังนี้ครับ

N = 4000;         % จำนวนแซมเปิลของสัญญาณ
u = idinput(N,'sin',[0 0.2],[-1 1],[30 10 1]);

สำหรับตัวเลือกของ idinput นั้น [0 0.2] คือช่วงความถี่ที่ต้องการ [30 10 1] 30 คือจำนวนสัญญา sine ที่ต้องการ 10 คือ จำนวนของการลอง และ 1 คือ grid skip สำหรับรายละเอียดของเรื่องพวกนี้ไปดูในคู่มือ Matlab เอาเองนะครับ

ปัญหาที่จะพูดถึงคือเรื่องช่วงความถี่ ดูคำอธิบายของ Matlab ทีไรก็ปวดหัวทุกที เอาง่าย ๆ ถ้าต้องการสัญญาณความถี่สูงสุดที่ 50 Hz ความถี่ในการชักข้อมูล (Sampling) ก็ต้องเป็นสองเท่า นั่นคือ 100 Hz หรือทุก ๆ 0.01 วินาที ช่วงความถี่ที่ต้องการคือ [0 0.2] นั้นหมายความว่าความถี่สูงสุดคือ 50*0.2 หรือ 10 Hz นั่นเอง

ในทางปฏิบัติเราจะถูกกำหนดอัตราการชักข้อมูลมาหรือ 0.01 วินาที ถ้าต้องการความถี่สูงสุดของสัญญาณเป็น 30 Hz เราก็ต้องเอา 0.01 วินาทีไปหาความถี่ในการชักข้อมูลก่อนคือ 100 Hz แล้วหารด้วยของเป็น 50 Hz แล้วกำหนดช่วงความถี่ในที่นี้คือ [0 0.6] นั่นเอง

เราจะรู้ได้อย่างไรว่าความถี่ของสัญญาณ Multi-sine อยู่ในช่วงที่ถูกต้อง (ถ้าคำนวณตามข้างบนมันก็ต้องถูกเป็นธรรมดา) แต่เพื่อความมั่นใจในทฤษฏี ปฏิบัติก็ต้องได้ด้วย วิธีการพล็อต Spectrum นั้นก็คือการหาค่ากำลังสองของค่าเฉลี่ยของค่าสมบูรณ์ของค่า FFT ของสัญญาณนั่นเอง ซึ่งทำได้ดังนี้ (ใช้ตัวอย่างความถี่สูงสุด 30 Hz)

u = idinput(N,'sine',[0 0.6],[-1 1],[50 10 1]);
ts = 0.01;                       % sampling time
T = (N-1)*ts;                  % เวลาในหนึ่งคาบ หน่วยเป็นวินาที
                                    % นับจากศูนย์
p = abs(fft(u))/(N/2);       % ค่าเฉลี่ยของค่าสมบูรณ์ของสัมประสิทธิ์ FFT
                                    % ของ u คิดแค่ครึ่งคาบบวก
p = p(1:N/2).^2;             % ค่ากำลังสอง
freq = [0:N/2-1]/T;            % คำนวณค่าความถี่
semilogy(freq,p);              % พล็อตกราฟ semilog แกน x เป็นความถี่
xlabel('Hz');

ผลที่ได้แสดงได้ตามรูปข้างล่าง

หวังว่าคงได้ประโยชน์บ้างนะครับ

Control Tutorials for Matlab

ปัจจุบันถ้าใครเข้าเว็บ Matworks บ่อย ๆ จะพบว่าตัวเว็บมีบริการทางการศึกษาฟรี ๆ ให้มากมาย เพียงแค่สมัครสมาชิกก็จะได้รับสิทธิ์เข้าไปดูไฟล์ วิดีโอต่าง ๆ มากมาย รวมทั้งไฟล์ในหนังสือต่าง ๆ ด้วย

ช่วงนี้ต้องกลับมาทำงานกับ Matlab อีกครั้ง ในขณะที่มีความตั้งใจอย่างยิ่งที่จะเปลี่ยนไปใช้ของฟรีอย่าง Scilab ที่นับวันจะยิ่งดูดีขึ้นมาก แต่ต้องขอบอกไว้ก่อนนะครับ โปรแกรมฟรี ๆ เหล่านี้ในอนาคตเมื่อมีคนนิยมมาก สิ่งที่ตามมาก็คือเรื่องของการบริการ ถ้าตัวผู้ผลิตต้องการจะบริการผู้ใช้เต็มเวลา การเรียกเก็บเงินตามค่าแรงก็คงจะมีเป็นปกติ เหมือนเช่น โปรแกรมตระกูล M พวก Maple, Mupad และ Mathematica ที่เมื่อก่อนก็ฟรี แต่ภายหลังต้องใช้เวลาในการตอบคำถามผู้ใช้มาก ๆ ก็ต้องเก็บเงินบ้าง เก็บไปเก็บมาติดใจก็เลยเก็บแพงมาก

เอาหละกลับมาที่เรื่องที่จะพูดในวันนี้ครับ Control Tutorials for Matlab

ซึ่งเป็นบริการติว Matlab ผ่านเว็บ ที่เป็นผลงานมีรางวัลของศาสตราจารย์ Dawn Tilbury คนสวย (สวยจริง ๆ เคยเจอตัวเป็น ๆ) ตอนนี้ทางเจ้าของได้เอาเวอร์ชันที่ไว้ขาย (ผมมีแผ่นที่เมืองไทย ซื้อไว้ตั้งแต่ปี 2000) มาแจกฟรีบนเว็บแล้ว (อาจจะแจกตั้งนานแล้วแต่ผมไม่ได้ดู)

สำหรับผู้ที่สนใจในวิชาวิศวกรรมระบบควบคุม เว็บนี้ดีมาก ๆ สำหรับการใช้งาน Matlab เพื่อออกแบบระบบควบคุม โดยที่ไม่พึ่งเครื่องมือแบบปิดตาใช้มือปรับอย่างเดียวแบบ LTItools เพราะการออกแบบโดยทำตามในเว็บเป็นการออกแบบที่ผู้ออกแบบพึงต้องรู้รายละเอียดในการออกแบบพอสมควร

ตัวเว็บมีตัวอย่างการออกแบบทางเครื่องมือกลต่าง ๆ มากมาย โดยใช้เทคนิคต่าง ๆ กัน รวมไปถึงการแนะนำการใช้งาน Matlab เบื้องต้นด้วย ลองใช้กันดูนะครับ

WinFIG 4.62 fixes a rendered LaTeX equation bug

หลายคนที่ใช้ WinFIG 4.61 แล้วปรากฏว่ามันไม่แสดงสมการในรูปแบบที่ควรจะแสดงตามที่ผมเคยโม้ไว้ใน WinFig ใช้ยาก แต่อาจจะคุ้ม ส่วนตัวก็มีปัญหาแบบเดียวกันแต่ไม่ได้แจ้งผู้เขียนโปรแกรมไป ด้วยความขี้เกียจ เป็นที่น่ายินดีที่มีคนแจ้งไปแล้วและผู้เขียนโปรแกรมก็ได้แก้ไขแล้วออกเวอร์ชัน 4.62 มาให้ใช้ ผมลองดูแล้วใช้งานได้ดี พูดกันตามตรงในขณะที่โปรแกรมขนาดยักษ์เชื่องช้าอย่าง Inkscape มีตัวเลือกสำหรับ LaTeX ให้ใช้ และแจกฟรีด้วย ถ้า WinFIG ยังขายในราคาแบบนี้ แทนที่จะแจกฟรีแล้วใช้วิธีการรับบริจาคแทนหละก็ ตัวโปรแกรมคงไม่มีใครใช้ (การขายโปรแกรมในราคาขนาดที่คนเขียน WinFIG ขาย มันก็ควรจะมีบริการหลังการขายที่ดีกว่านี้)

อย่างไรก็ตามการที่มันมีการแสดงผลสมการแบบเห็นจริง เห็นจัง และตัวโปรแกรมมีขนาดเล็กเหมาะกับการใช้งานเล็ก ๆ น้อย ๆ แบบนี้ มันก็ยังเป็นตัวเลือกที่น่าสนใจ เอาใจช่วยให้คนเขียนแจกฟรี