การแก้ปัญหาฟอนต์ Helvetica ในเอกสารที่สร้างจาก LaTeX แล้วมีปัญหากับ IEEE PDF eXpress

ถ้าใครเขียนบทความวิจัยเพื่อไปตีพิมพ์ในประชุมวิชาการระดับนานาชาติ สิ่งหนึ่งที่ควรจะดูก็คือเรื่องบทความวิจัยของเรามันจะไปอยู่ในฐานข้อมูลหรือไม่ หนึ่งในฐานข้อมูลยอดนิยมก็คือ IEEE Explore นั่นเอง เงินที่เสียเพิ่มขึ้นก็แลกเอาว่าจะให้บทความเราหายไปหรือคงอยู่ ผมได้รับการตอบรับให้ตีพิมพ์ในประชุมวิชาการระดับนานาชาติ ซึ่งต้องจ่ายเงินแล้ว upload บทความตัวสุดท้ายของเราขึ้นไปให้คณะผู้จัดงานได้รวบรวมไปตีพิมพ์ ปกติผมสร้างเอกสารจาก XeLaTeX ได้ตัว pdf มา ก็ upload ได้ไม่มีปัญหา แต่ก็มีเรื่องจนได้ เนื่องจากรูปกราฟของบทความผมที่สร้างขึ้นจากโปรแกรมคำนวณยอดนิยม ดังมีค่าเริ่มต้นของฟอนต์ต่าง ๆ เป็น Helvetica ซึ่งแน่นอนไม่มีบน windows ก็ประเมินไม่ผ่านตามระเบียบ แก้ยังไงน่ะเหรอครับ ก็ง่าย ๆ กลับเข้าไปแก้ที่รูปภาพที่มีอยู่รวม ๆ ประมาณ 20 รูป แต่ละรูปก็แก้ประมาณ 4-5 จุด ทำไปหนึ่งรูป ผลหรือครับ ไม่ได้ครับ เนื่องจากมีฟอนต์ซ่อนหาไม่เจออยู่บนที่ต่าง ๆ ในรูปกราฟเต็มไปหมด กระบวนท่าถัดมาที่ผมใช้ก็คือการใช้โปรแกรม IrfanView มาแปรงรูปจาก eps ไปเป็น pdf ให้ (ตรงนี้ไม่งงนะครับ) เราก็จะได้รูปภาพแบบเวกเตอร์ที่ไม่ได้ใช้ความได้เปรียบของเวกเตอร์ (ไม่งงนะ) […]

Read More →
วาดวงรีด้วย MATLAB

จากความตอนที่แล้ว การสร้างวงกลมด้วย MATLAB ขั้นต่อไปคงเป็นการสร้างวงรี จริง ๆ แล้วเราเรียนเรื่องวงรีจากเรขาคณิตวิเคราะห์ในบทที่ว่าด้วยภาคตัดกรวยที่มี วงกลม วงรี พาราโบลา ไฮเปอร์โบลา ยากสุด ๆ กลับไปดูในแบบเรียนเอาเอง นะครับ หรือที่ Conic Section Gallery การวาดวงรีด้วย MATLAB สำหรับผมแล้วผมจะไม่ใช้เรขาคณิตวิเคราะห์ เพราะผมเป็นวิศวกรที่ไม่เขียนแบบด้วยไม้บรรทัดและวงเวียนอีกแล้ว ผมจะวาดแบบง่ายโดยให้ค่าบนแกน และค่าบนแกน ซึ่งคราวนี้ค่า และ จะมีขนาดไม่เท่ากัน รหัสต้นของ MATLAB ที่ดูดีขึ้นก็จะเป็น

  ทีนี้ถ้าเราต้องการหมุนวงรีจะทำอย่างไรครับ ถ้าจะบวกองศาที่หมุนไปดื้อ ๆ นั้นจะไม่เป็นผล เพราะหมุนแกนตอนแกนตั้งมันก็หมุนด้วย ด้วยความสัตย์จริงผมต้องไปค้นหนังสือ พีชคณิตเชิงเส้น เรื่อง orthogonal basis มาอ่าน ได้ความว่าเราสามารถใช้ orthogonal basis มาหมุนวงรีได้ ดังนี้ โดยที่ คือค่าบนแกนนอนและแกนตั้งตามลำดับ ก็จับมาคูณ กันดื้อ ๆ เลยครับ […]

Read More →
การสร้างวงกลมด้วย MATLAB

เห็นมีคำค้นการสร้างวงกลมด้วย MATLAB ไม่ทราบว่าคนค้นได้คำตอบหรือยัง ก็ถือโอกาสเขียนวิธีการไว้ตรงนี้เลย เผื่อว่าคนที่ค้นจะกลับมาอีกแล้วจะได้คำตอบ ว่ากันตามตรงการสร้างวงกลมด้วย MATLAB ถือเป็นปัญหาเส้นผมบังภูเขานะครับสมการวงกลมนั้นมีลักษณะดังนี้ โดยที่ คือรัศมีของวงกลม ถ้าผู้ต้องการวาดวงกลมด้วย MATLAB เอาเส้นผมออกก็จะพบว่าจริง ๆ แล้วเราสามารถเขียนสมการข้างต้นได้ดังนี้ โดยให้ค่าบนแกน คือ และค่าบนแกน  คือ   แค่นี้เราก็สามารถนำมาสร้างคำสั่งของ MATLAB ได้แล้วง่าย ๆ ดังนี้

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

Read More →
Plot2SVG MATLAB and Inkscape

หลายคงคงรู้ว่าเวลาเอารูปจาก MATLAB ไปใส่ในเอกสาร LaTeX นั้น ฟอนต์ที่อยู่ในกราฟนั้นจะไม่เหมือนกับเอกสาร ปัญหานี้จะว่าใหญ่ก็ไม่เชิง จะว่าเล็กก็ไม่เชิง ขึ้นอยู่กับมุมมองของแต่ละคน แน่นอนสำหรับผมนั้นแค่เอารูปแบบ pdf หรือ eps ไปใช้ในเอกสารแล้วภาพไม่แตก พิมพ์ออกมาสวยงามกว่าชาวบ้านเขาก็พอแล้ว แต่ปรากฏว่าปัญหานี้ใหญ่พอสมควรสำหรับคนเยอรมันที่ผมทำงานด้วย จริง ๆ มีวิธีแก้ไขหลายวิธีปัญหานี้ได้พูดกันอย่างกว้างขวางที่ What is the best way to include Matlab graphics รวมถึงวิธีแก้ไขด้วยครับ  วิธีที่ดีที่สุดให้ดูคำตอบของคุณ Shuhao Cao ที่มีรูปเยอะ ๆ ซึ่งคุณ Shuhao Cao ได้แสดงปัญหาของการใช้ matlab2tikz ซึ่งมีผู้นิยมใช้กันมาก ซึ่งปัญหาเหล่านี้นั้นผมก็เจอเหมือนกัน และไม่เคยใช้ matlab2tikz สำเร็จเลย วิธีที่คุณ Cao เสนอให้ใช้คือ plot2SVG ซึ่งโหลดได้จากเว็บของ  plot2svg_20120915.zip การติดตั้งก็เหมือนกับแพ็กเกจของ Matlab ทั่วไป การเรียกใช้คำสั่งก็อ่านได้ในคู่มือที่ติดมาด้วยครับ เมื่อได้ไฟล์ […]

Read More →
MATLAB; you may see different results on different platforms.

หลายคนอาจจะเจอปัญหานี้ ผลจากการคำนวณของ MATLAB บนเครื่องคอมพิวเตอร์สองเครื่องให้ค่าไม่เหมือนกัน ลูกศิษย์อาจจะบอกว่าที่บ้านผมทำได้ ได้ผลดี แต่ทำไมเครื่องที่มหาวิทยาลัยให้ผลไม่เหมือนกัน ในขณะที่อาจารย์ส่ายหน้าและไม่เชื่อ เรื่องนี้ต้องชม MATLAB ในเรื่องการบริการพอสมควร ผมส่งคำถามไปก็มีการตอบกลับมาไม่เกินสองวัน มีวิศวกรคอยทดสอบปัญหาให้ตลอดเวลา  เรื่องมีอยู่ว่าผมทำงานที่บ้านตอนกลางคืน ในขณะที่ทำงานที่ทำงานตอนกลางวัน อยู่มาวันหนึ่งก็แบกเครื่องโน้ตบุ๊คไปทำงานด้วย นัยว่าสองเครื่องย่อมทำงานการปรับแต่งพารามิเตอร์ได้ดีกว่าเครื่องเดียว ผลปรากฎว่าสองเครื่องให้ผลไม่เหมือนกันครับ สมมุติฐานแรกเลย เครื่องโน้ตบุ๊คผมเป็น AMD  รัน windows 7 pro (64 bits) และใช้ MATLAB 2010b ในขณะที่เครื่องที่ทำงานเป็น Intel และรัน windows xp sp3 (32 bits)  และใช้ MATLAB 2010a  เลข 32 กับ 64 บิตนั้นหลอนก่อนเพื่อน  ค้นไปค้นมาก็เลยลง MATLAB 2010b เวอร์ชัน 32 bits ในโน้ตบุ๊คเพิ่มเข้าไป ปรากฏว่าคราวนี้ได้ผลต่างกันสามแบบเลยครับ ก็เลยเขียนไปถาม […]

Read More →
การดึงข้อมูลจากกราฟใน Matlab

ใช้ Matlab แล้วเคยประสบปัญหาแบบนี้ไหมครับ "ต้องการพล็อตกราฟใหม่ให้เหมือนรูปเก่า แต่หา m-file ไม่เจอ" และมีปัญหาต่อเนื่องมา "มีรูปสองรูปที่พล็อตไว้แล้วต้องการเปรียบเทียบบนแกนเดียวกัน แต่ข้อมูลที่พล็อตไว้ค่าบนแกน x ไม่เหมือนกัน" ถ้าไม่เคยมีปัญหาจำพวกนี้ ก็ขอยินดีด้วยครับ ที่คุณเป็นนักจัดการข้อมูลที่เก่งและเป็นระเบียบมาก แต่คนส่วนใหญ่ไม่ใช่อย่างนั้น บางส่วนก็แก้ปัญหาด้วยการทำใหม่ทั้งหมด ซึ่งเสียเวลามาก  บางพวกก็แก้ด้วยการไม่ทำ หรือเปรียบเทียบแบบชุ่ย ๆ (ถ้าเป็นนักเรียนนักศึกษาก็ขึ้นอยู่แต่บุญแต่กรรม บางครั้งอาจารย์ที่ปรึกษาก็ไม่ยอมกับบางงาน บางงานก็ยอมเฉย หาบรรทัดฐานไม่ได้ อาจารย์พวกนี้น่าจะไปขายโอเลี้ยงมากว่าเป็นอาจารย์ครับ เพราะโอเลี้ยงบางทีก็ให้มาก ให้น้อย แตกต่างกันตามอารมณ์) หรือไม่ก็ใช้เคลมว่าของดูเองดีอย่างโน้นดีอย่างนี้ แต่ไม่แสดงการเปรียบเทียบ โม้ซะเยอะ ถ้าเรามีกราฟ Matlab ในมือ แล้วทำ m-file ที่ใช้งานหาย หรือหาไม่เจอ แล้วต้องการนำข้อมูลจากกราฟที่พล็อตไปพล็อตเปรียบเทียบกับข้อมูลอื่น ในคู่มือ Matlab นั้นมีวิธีการ(ซ่อน)อยู่ในคู่มือ ซึ่งน้อยคนนักที่จะหาเจอ ผมเจอวิธีการนี้ตั้งแต่ปี 2007 ได้จดบันทึกเอาไว้ วันนี้เอามาเขียนใหม่แล้วกันครับ ให้เลือกกราฟที่เราต้องการ จากนั้นให้ใช้คำสั่ง findobj เพื่อสร้างตัวแปรวัตถุของกราฟนั้น ๆ จากนั้นก็ดึงข้อมูลในแกน x […]

Read More →
MATLAB 64 bit

ใครที่ใช้ MATLAB เวอร์ชัน 64 bit อยู่แล้วต้องการจะคอมไพล์ mex ไฟล์หล่ะก็ ต้องแสดงความเสียใช้ด้วยเพราะมันไม่มีคอมไพเลอร์ติดมาให้  แล้วทำอย่างไรหล่ะครับ งานนี้ หลาย ๆ งานจำเป็นซะด้วย ง่ายมากครับ เข้าไปที่หน้านี้ Supported and Compatible Compilers - Release 2010b แล้วก็เลือกเอาตัวฟรี ๆ ของ Microsoft มาซักตัว เดี๋ยวนี้เค้าใจดีแจกฟรีเยอะ  ดีจัง

Read More →
Control Tutorials for Matlab

ปัจจุบันถ้าใครเข้าเว็บ Matworks บ่อย ๆ จะพบว่าตัวเว็บมีบริการทางการศึกษาฟรี ๆ ให้มากมาย เพียงแค่สมัครสมาชิกก็จะได้รับสิทธิ์เข้าไปดูไฟล์ วิดีโอต่าง ๆ มากมาย รวมทั้งไฟล์ในหนังสือต่าง ๆ ด้วย ช่วงนี้ต้องกลับมาทำงานกับ Matlab อีกครั้ง ในขณะที่มีความตั้งใจอย่างยิ่งที่จะเปลี่ยนไปใช้ของฟรีอย่าง Scilab ที่นับวันจะยิ่งดูดีขึ้นมาก  แต่ต้องขอบอกไว้ก่อนนะครับ โปรแกรมฟรี ๆ เหล่านี้ในอนาคตเมื่อมีคนนิยมมาก สิ่งที่ตามมาก็คือเรื่องของการบริการ ถ้าตัวผู้ผลิตต้องการจะบริการผู้ใช้เต็มเวลา การเรียกเก็บเงินตามค่าแรงก็คงจะมีเป็นปกติ เหมือนเช่น โปรแกรมตระกูล M พวก Maple, Mupad และ Mathematica ที่เมื่อก่อนก็ฟรี แต่ภายหลังต้องใช้เวลาในการตอบคำถามผู้ใช้มาก ๆ ก็ต้องเก็บเงินบ้าง เก็บไปเก็บมาติดใจก็เลยเก็บแพงมาก เอาหละกลับมาที่เรื่องที่จะพูดในวันนี้ครับ Control Tutorials for Matlab ซึ่งเป็นบริการติว Matlab ผ่านเว็บ ที่เป็นผลงานมีรางวัลของศาสตราจารย์ Dawn Tilbury คนสวย (สวยจริง ๆ เคยเจอตัวเป็น […]

Read More →
คู่มือที่ดีที่สุดของ MATLAB เท่าที่เคยเห็นมา

ผมว่าเกือบร้อยทั้งร้อยเวลาใช้งาน MATLAB แล้วจะมีปัญหาคือไม่มีคู่มือ อย่างดีก็แค่พิมพ์

ซึ่งคำสั่งที่จะขอความช่วยเหลือก็จะเป็นแค่คำสั่งที่รู้จัก แล้วเราก็ไม่มีทางรู้ว่า MATLAB สามารถทำอะไรได้บ้างนอกจากอ่านคู่มือให้ครบทุกหน้า ซึ่งใครจะทำ วันนี้ไม่ว่างแต่อยากดูคู่มือ MATLAB ว่าดีแค่ไหน (ปัจจุบันดีขึ้นมาก) แล้วผมก็พบรูปข้างล่างนี้ รูปข้างล่างนี้พอได้ในหน้า Types of MATLAB ซึ่งในแต่ละรูปจะเป็นรูปที่แสดงให้เราเห็นทันทีเลยว่าสิ่งที่เราได้จากคำสั่งหล่านี้จะทำอะไรให้เราได้บ้าง แต่ละรูปก็จะมีชื่อคำสั่งที่สามารถเชื่อมโยงเราไปยังคู่มือของคำสั่งนั้น ๆ ได้ สุดยอดดีมาก ๆ โดยเฉพาะอย่างยิ่ง การพล็อตรูป 3 D ดูแค่นี้ชัดเลยนะครับไม่ต้องไปหาเพิ่มเติมที่ไหนอีก ด้วยความสัตย์จริง พึ่งรู้ว่ามีอย่างนี้ด้วย

Read More →
Export Simulink Diagram to use in LaTeX Document

ภาพจาก Simulink ของ Matlab เป็นหนึ่งในภาพที่การจับภาพจากหน้าจอไปลงเอกสารได้รับความนิยมมาก ๆ ส่วนใหญ่ก็จะได้กรอบของหน้าต่างติดมาด้วย พอมาใช้ในเอกสารจริง การย่อขยายรูปภาพก็จะทำให้ได้รูปที่ดูไม่ดีนัก จริง ๆ แล้วถ้าดูเอกสารของ Simulink บริษัท Mathworks นั้นจะไม่พบว่ามีการจับภาพจากหน้าจอมาใส่แต่อย่างใด ในบทความนี้จะนำเสนอวิธีการดึงรูปจาก Simulink ในรูปแบบเวกเตอร์มาใส่เอกสารบน LaTeX ให้ได้รูปที่ดี และสามารถใช้ได้ทั้ง LaTeX และ pdfLaTeX หลังจากสร้าง Simulink ไฟล์เรียบร้อยแล้ว ก็ใส่จัดเก็บในชื่อที่ต้องการ ในที่นี้จะใช้ thaitug คำสั่งที่ต้องใช้งานคือ

ตัวเลือก -sthaitug คือ Simulink ไฟล์ที่เราต้องการในที่นี้คือ thaitug.mdl ส่วน -depsc2 เราต้องการพิมพ์ออกเป็น postscript level 2 ไฟล์แบบมีสีด้วย ส่วน thaitug.ps คือไฟล์ที่ต้องการจัดเก็บ ทั้งหมดทำบน workspace ของ Matlab ซึ่งไฟล์รูปภาพแบบ postscript […]

Read More →