เรื่องของ Caption

caption1

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

วิธีการก็ใช้ package caption นะครับ เปิดคู่มือแล้วก็อ่านตาม อ้าวไม่ใช่ ทำดังนี้ครับ

กรณีต้องการแก้ไขเฉพาะรูปนั้น ๆ ก่อนคำสั่ง \caption{xxx} ก็ให้ใส่คำสั่ง
\captionsetup{width=xcm} โดยแทน x ด้วยตัวเลข สิ่งที่คุณจะได้ก็ตามรูปข้างล่าง

caption2

ซึ่งคุณจะเห็นว่าเหมาะสมขึ้นในบางกรณี หวังว่าจะเป็นประโยชน์นะครับ

Circuit_macros Version 6.23: Drawing electric circuits and other line diagrams.

Circuit_macros Version 6.23: Drawing electric circuits and other line diagrams.

และแล้วอาจารย์ก็เริ่มสนับสนุนการใส่สี ปัจจุบันการใส่สีให้รูปภาพในเอกสารวิชาการ
ถือเป็นเรื่องปกติแล้วครับ เพราะการพิมพ์สีนั้นถึงแม้จะเป็นเครื่องอิงค์เจ๊ตหมึกก็ไม่
เลอะเหมือนแต่ก่อน เครื่องเลเซอร์สีก็ราคาถูก การส่งหนังสือเป็นไฟล์ pdf ก็เป็น
เรื่องปกติ วารสารวิชาการก็ยอมรับภาพสี

ก็ไม่ใช่เรื่องแปลกที่โปรแกรมวาดรูปจะต้องสนับสนุนสี แฮะ ๆ มาแบบง่าย ๆ ซะ
ด้วย

MATLAB Central – Loren on the Art of MATLAB

บทความอาทิตย์ที่แล้วของเธอกล่าวถึงเรื่องของฟังก์ชัน hypot ว่ามีไว้ทำไม ก็พึ่ง
รู้จักฟังก์ชันนี้เหมือนกัน

HYPOT Robust computation of the square root of the sum of squares
C = HYPOT(A,B) returns SQRT(ABS(A).^2+ABS(B).^2) carefully computed to avoid underflow and overflow.

ข้างบนเป็น Help ที่ได้จากตัว MATLAB

เธอบอกว่าสำหรับตัวเลขทั่วไปแล้วไม่มีปัญหาในการคำนวณค่าของฟังก์ชัน

y = \sqrt{a^Ta + b^Tb}

นี้หรอก

ที่น่าสนใจคือฟังก์ชันนี้จะให้ผลลัพท์เป็น Inf เมื่อตัวเองเกินค่า realmax ซึ่งถ้า
เป็นวิธีการอื่น ๆ จะได้ค่า realmax แทนที่จะเป็น Inf

บทความของเธอมีหลายอันน่าสนใจดีนะครับ สำหรับคนชอบ MATLAB

เขียน MATLAB ให้เร็วขึ้น

สำหรับ MATLAB นั้น มันเป็นกรอบการทำงานที่ครอบจักรวาลเกินไป ตัวใหญ่และ
อ้วน แม้แต่คนของ Mathworksเองก็รู้อะไรไม่เยอะ การเขียน m-files ให้เร็วขึ้น
จึงเป็นเรื่องพึงปรารถณา (Toolbox ควรจะเขียนเป็น m-files เพราะพัฒนาต่อยอด
ได้ง่าย การทำงานแบบวิเคราะห์หรือสังเคราะห์ ความเร็วไม่ใช่เรื่องจำเป็นนัก Prof.
S. Boyd เนี่ยแหละบอกว่ามันรันช้านัก ก็ไปเที่ยวปีหนึ่งแล้วค่อยกลับมาทำงานต่อ
มันก็เร็วแล้วหล่ะ) เพราะการทำงานในขั้นตอนพัฒนานั้นต้องการความเร็ว เพื่อให้
ผู้พัฒนาสามารถพัฒนาได้เร็วขึ้น ขืนรัน MATLAB เพื่อแสดงผลทีข้ามวันย่อมไม่
ใช่ผลดี วันนี้มีตัวอย่างการเขียน MATLAB ให้เร็วขึ้น ดูตัวอย่างนี้ครับ

D(t) =\displaystyle{\left\{\sum^{n_a}_{i=1}[a_i-\hat{a}_i(t)]^2+ \sum^{n_b}_{i=0}[b_i-\hat{b}_i(t)]^2\right\}^{1/2}}

ตัวอย่างนี้ดีมาก ๆ

D = sqrt((sum(a-ah(t)))^2 + (sum(b-bh(t)))^2);

ง่าย ๆ แบบนี้

ถ้าใช้ความรู้ทางพีชคณิตเชิงเส้นก็จะทำแบบนี้

D = sqrt((a-ah(t))’*(a-ah) + (b-bh(t))’*(b-bh(t)));

วิธีไหนที่เร็วกว่ากัน คิดกันง่าย ๆ ถ้า a, b เป็นเวกเตอร์ที่มีสมาชิก n ตัว แบบที่
หนึ่งจะมีการบวกกัน 2n +1 ครั้ง และมีการยกกำลังสองหรือคูณ 2 ครั้ง นั้นคือมีการกระทำ
ทางพีชคณิต 2n+3 ครั้งแล้วค่อยถอดรากที่สอง ในขณะที่แบบที่สอง มีการคูณกัน 2n ครั้ง มี
การบวกกัน 1 ครั้ง นั้นคือมีการกระทำทางพีชคณิต 2n+1 ครั้ง (ไม่นับการ transpose ซึ่ง
เสียเวลาเหมือนกัน) ไม่น่าเชื่อแบบที่สองช้ากว่าแบบแรกเกือบสองเท่าทีเดียว (เมื่อปริมาณ
ข้อมูลเพิ่มขึ้น)

สร้างกรอบง่าย ๆ ด้วย ascmac.sty

นั่งหาเอกสารอยู่เผอิญไปเจอเว็บนักศึกษาญี่ปุ่น Nam’s Home Page ดังไปเจอ
.sty ไฟล์ สำหรับสร้างกรอบแบบง่าย ๆ มีชื่อว่า ascmac.sty ความสามารถน่าใช้
ทีเดียว แต่ก่อนอื่นหลังจากโหลดมาแล้วให้ลบบรรทัดนี้ออกก่อน

\font\@ascgrp=ascgrp

เข้าใจว่าเป็นการเขียนขึ้นเพื่อให้คนญี่ปุ่นใช้

itembox1

ซึ่งการสร้างกรอบแบบข้างบนใช้คำสั่งง่าย ๆ แค่

\begin{itembox}[l]{Test}
Test itembox
\end{itembox}

ซึ่งจะเห็นว่าง่ายมาก จะย้ายตัวหนังสือที่กรอบก็เปลี่ยนจาก l ไปเป็น c หรือ r เท่านั้น
เอง

นอกจากนี้ยัง environment อื่น ๆ อีกสามแบบคือ screen boxnote และ shadebox
ในกรณีของ boxnote นั้นต้องลงฟอนต์ตัวใหม่บางตัวด้วย จึงไม่แนะนำให้ใช้ ถ้าใช้
ก็ต้องเหนื่อย