Category Archives: Matlab

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

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

วาดวงรีด้วย MATLAB

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

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

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

Plot2SVG MATLAB and Inkscape

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

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

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

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

MATLAB 64 bit

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

Control Tutorials for Matlab

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

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

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

Export Simulink Diagram to use in LaTeX Document

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