|
การฝึกเขียนโปรแกรม SciLab ขั้นแนะนำ (โดย MathGuy)
โพสต์เมื่อ:
11:21 วันที่ 30 เม.ย. 2550 ชมแล้ว:
22,220
ตอบแล้ว:
197
วิชาการ.คอม > ครูอาจารย์
วิชาการ.คอม > ครูอาจารย์ > ครูคุยทั่วไป วิชาการ.คอม > ครูอาจารย์ > การเรียนการสอน วิชาการ.คอม > ครูอาจารย์ > เทคนิควิธีการสอน
น่าจะนับได้ว่า เป็นการนับ 1 ของการที่จะพอมีอะไรแบ่งปันให้กับคนอื่นๆบ้าง ในโลก Internet
จากที่เราได้ใช้ประโยชน์จากแหล่งความรู้ ข้อมูลต่างที่มีประโยชน์ต่อเรา ที่มีคนเสียสละเวลา
เสียสละแรงกายใจ แบ่งปันให้เราได้ใช้ร่วมกัน
เมื่อถึงจุดๆหนึ่ง เราก็น่าจะได้เริ่ม ทดแทนคุณกลับคืนบ้าง (รับมามากแล้ว เราก็ฝึกที่จะให้
)
.........................................................................................................................
กระทู้นี้ จึงเป็นการแบ่งปัน ในเรื่องการฝึกเขียนโปรแกรม SciLab
เข้าไปดูตรงนี้นะครับ : http://www.champa.kku.ac.th/jeerayut/scilab41/scilab41.html
(1) ถ้ารู้ว่า MatLab, Maple, Mathematica, Maxima, Octave คืออะไร ก็จะรู้ว่า SciLab เป็นพี่น้องกันด้วย
(2) SciLab เป็น Freeware และเข้าใจว่าจะเป็นต่อไปเรื่อยๆ (เช่นเดียวกับ Maxima และ Octave)
(3) ผมเชือว่า SciLab มีความสามารถสูงในการใช้งาน และกำลังจะเข้าไปพิสูจน์ หาคำตอบอันนี้
(4) กระทู้นี้จึงเป็นการเชิญชวน ผู้ที่สนใจ ให้เรียนรู้ไปด้วยกัน
(5) ผู้เรียนควรจะมีพื้นความรู้ทางคณิตศาสตร์ (มัธยมปลายน่าจะ OK) และมีพื้นความรู้ทางการเขียนโปรแกรมคอมพิวเตอร์บ้างพอสมควร (เคยเขียนมาบ้าง ภาษาอะไรก็ได้)
(6) ผมจะแนะนำให้น้อยที่สุด (เท่าที่คิดว่าน่าจะพอเริ่มต้นได้) และจะเน้นการทดลองเขียน การเรียนรู้ด้วยตัวเอง
(7) ถ้ามีผู้ใดที่ใช้โปรแกรมนี้อยู่ และถึงขั้นเชี่ยวชาญแล้ว ก็อยากจะให้มาช่วยๆกัน แลกเปลี่ยนประสบการณ์ครับ
(8) ผู้ที่สนใจ ถ้าได้ทดลองเขียน เรียนรู้ตามไป ถ้าไม่เข้าใจ ก็ให้ post ถามในกระทู้นี้นะครับ
Image Processing เป็นวิชาการเฉพาะทาง ผมคงแนะนำได้น้อยมาก แต่ลองค้นดูแล้ว พบว่ามี Tool หรือ Package ที่ใช้กับ Scilab และก็เป็น freeware ด้วย หลายตัวทีเดียว ลองดูตาม links ต่อไปนี้ นะครับ ![]() http://www.scilab.org/contrib/index_contrib.php?page=download.php&category=IMAGE%20TOOLS http://www.nabble.com/Scilab-Image-Processing-Toolbox-f3873.html http://siptoolbox.sourceforge.net/ SIP stands for Scilab Image Processing toolbox. SIP intends to do imaging tasks such as filtering, blurring, edge detection, thresholding, histogram manipulation, segmentation, mathematical morphology, color image processing, etc. These operations are useful for problem solving in real-world applications ranging from car motion planning to automatic diagnosis of medical images. SIP is meant to be a complete, useful, and FREE digital image processing toolbox for Scilab. What SIP can do: Although SIP is early in its development, it has the following useful features: I/O of image files in many formats, including BMP, JPEG, GIF, PNG, TIFF, XPM, PCX, and more. (Thanks to ImageMagick) Numerous functions with flexible interface and error treatment (see a partial LISTING) Help pages with examples for all the functions Demos http://sivp.sourceforge.net/ Scilab needs a powerful image processing toolbox. SIVP intends to do image processing and video processing tasks. SIVP is meant to be a useful, efficient, and free image and video processing toolbox for Scilab. There is another excellent Scilab image processing toolbox named SIP, which does the same task as SIVP. SIVP is inspirited by SIP, and developed on OpenCV nor ImageMagick as SIP. OpenCV is great at image processing, and SIVP can benefit from OpenCV. แนะนำฟังก์ชัน rand() สำหรับสร้างตัวเลขสุ่ม ที่มีค่าระหว่าง 0 ถึง 1 ...................................................................................... -->x=linspace(0,2,100); -->for i=1:100, y(i)=rand(); end -->plot2d3(x,y) --> ได้ผลดังนี้ ![]() แนะนำการใช้ contour ในการพิจารณาหาค่าประมาณของจุดที่ให้ค่าต่ำสุด หรือสูงสุด ของฟังก์ชัน 2 ตัวแปร .................................................. ตัวอย่าง : พิจารณาหาค่าต่ำสุด หรือสูงสุดของฟังก์ชัน z=f(x,y)=(1+x+y)/(1+x^2+y^2) เมื่อ -2 <= x,y <= 2 วาดพื้นผิวของ f ได้ดังนี้ function [z]=f(x,y) z=(1+x+y)/(1+x^2+y^2); endfunction function MySurface() x=linspace(-2,2,100); y=linspace(-2,2,100); z=feval(x,y,f); clf(); plot3d(x,y,z) endfunction ![]() จะเห็นว่า f มีค่าสูงสุดบนโดเมน [-2,2] x [-2,2] แต่ดูจากกราฟของพื้นผิว ยังประมาณค่า x,y ที่ให้จุดยอดดังกล่าว ได้ลำบาก เราจะอาศัยการวาดเส้น contour lines ช่วย ดังนี้ function [z]=f(x,y) z=(1+x+y)/(1+x^2+y^2); endfunction function MyContour(n) x=linspace(-2,2,100); y=linspace(-2,2,100); z=feval(x,y,f); clf(); contour(x,y,f,n) endfunction ใน command windows เราเรียกดูดังนี้ -->MyContour(10) ![]() สวยมากค่ะ กราฟในแกนสามมิติ ใน MATLAB มีฟังก์ชัน stem() ซึ่งใช้ plot discrete function ผมอยากจะplot อย่างนั้นบ้างใน Scilab แต่หาฟังก์ชันที่ทำงานได้เหมือนกัน ไม่เห็นมีเลย รบกวนทุกท่านช่วยแนะนำด้วยครับ Jimmy (IP:58.8.99.194) ฟังก์ชัน stem() ใน Matlab ที่คุณ Jimmy พูดถึง เมื่อ plot แล้วได้หน้าตารูปร่างเป็นแบบไหนครับ พอจะมีตัวอย่างให้ดูบ้างมั้ยครับ ( เผื่อจะได้ช่วยค้นหาว่า มีอะไรใน scilab ที่ใกล้เคียง หรือเหมือนกันหรือเปล่า ... และถ้าไม่มีจริงๆ เราก็อาจจะเขียน code ขึ้นมาเอง แล้ว save เก็บไว้ใช้งานก็ได้ครับ) เข้ามาอีกครั้งหนึ่ง อยากดูคำสั่งการสร้างรูปสี่เหลี่ยมผืนผ้า ขนาดประมาณ 2*3 ตารางนิ้ว สีแดง เพียงรูปเดียว (เท่านั้นแหละ) np (IP:202.57.179.17) -->plot2d(10,10,0) -->xset("color",5) -->xfrect(6,6,3,2) -->xfrect(10,10,2,3) --> ได้รูป 4 เหลี่ยมผืนผ้าขนาด 2x3 และ 3x2 ดังนี้ครับ ![]() ผมไปยืดรูปสเกลเลยเพี้ยนไป รูปสเกลเดิมเป็นดังนี้ครับ ![]() ![]() -->xgrid ได้ผลดังนี้ครับ สวัสดีคับ ผมเป็นนักศึกษาอยู่ปี 4 และมีความสนใจเกี่ยวกับโปรแกรม SciLab เนื่องจากผมเห็น project ของรุ่นพี่ๆที่ทำเกี่ยวกับ image processing และใช้โปรแกรม MatLab ผมเองมีความสนใจและกำลังค้นคว้าเพื่อทำ project เกี่ยวกับ image processing ผมได้อ่านบทความของพี่แล้ว แต่ผมจับต้นชนปลายยังไม่ถูกเลยครับ เพราะที่พี่สอนไว้ เป็นเหมือนการวาดเส้น โดยการ plot จุดต่อจุด แต่ project ที่ผมค้นคว้าเป็นการนำ information ที่เป็น image มาทำให้เป็นข้อมูลที่เป็น array โดนแทนจุดที่ต้องการ plot เป็น 1 และจุดที่ไม่ต้องการ plot เป็น 0 เพื่อนำมาเปรียบเทียบกันในภายหลัง ถ้าไม่เป็นกรรบกวนจนเกินไป พี่ช่วยชี้นำผมจะเป็นพระคุณมากคับ thanakorn / full_moon513@hotmail.com (IP:58.8.100.82) การ plot ในทำนองที่คุณ thanakorn กล่าวถึง ใน SciLab สามารถทำได้ ด้วยฟังก์ชัน Matplot(A) เมื่อ A เป็นเมตริกซ์ที่เก็บค่าสี มีตัวอย่างที่เคยโพสต์ไว้ ในหน้าที่ 2 ความคิดเห็นที่ 81,82,83,84 (ตัวอย่าง) -->A=[1 8 1; 8 1 8; 1 8 1] A = 1. 8. 1. 8. 1. 8. 1. 8. 1. -->Matplot(A) ได้ผลดังนี้ ![]() (ตัวอย่างเพิ่มเติม) -->for i=1:20, -->for j=1:20, -->A(i,j)=int(10*rand()); -->end, end -->Matplot(A) สร้างเมตริกซ์ขนาด 20 x 20 และให้มีสมาชิกเป็นค่าสีที่เราสุ่มขึ้นมา แล้วก็ให้ plot ออกมา ได้ผลดังนี้ ![]() คุณ thanakorn ลองอ่านดูความคิดเห็น #137, 138 ด้วยนะครับ ขอบคุณมากครับ ผมขอยกตัวอย่างฟังชั่นที่ผมค้นหาใน scilab นะคับ เป็นฟังชั่นของ MatLab a=imread('a.bmp'); เป็นฟังชั่นที่แปลงข้อมูลพิกเซลเป็นค่าความสว่างของสีอะคับ กับอีกฟีงชั่น คือการรับค่า input จาก เมาร์ คับ ขอถามคำถามอีกข้อนะคับ SciLab สามารถทำงานร่วมกับ code ของ C++ ได้ใหมคับ ขอบคุณร่วงหน้านะคับ thanakorn / full_moon513@hotmail.com (IP:58.8.103.223) สวัสดีครับผม Jimmy ครับ แต่ user name ที่ใช้เป็น Grape ครับเพราะลงทะเบียนไม่ผ่าน รูปตัวอย่าง ผมเอามาจากตัวอย่างของ MATLAB ครับ ส่วนชุดคำสั่งเป็นดังนี้ครับ t = linspace(-2*pi,2*pi,10); h = stem(t,cos(t),'fill','--'); ![]() สำหรับ คำถามของคุณ Grape ผมลองค้นดูคร่าวๆ ยังไม่พบคำสั่งของ scilab ที่ใช้แสดงผลของกราฟให้เหมือนตามที่แสดงในรูป ที่ใกล้เคียงกันมากที่สุด ก็จะมีคำสั่ง plot2d3() ของ scilab ลองดูตัวอย่างในคหพ#139 นะครับ ผมเชื่อว่า เราน่าจะสามารถเขียน code (สั้นๆ) ของ scilab เองเพื่อเลียนแบบคำสั่ง stem() ของ Matlab ได้ ขอเวลาผมค้นและทดลองดูสักหน่อยนะครับ ... (code ใน SciLab) t=linspace(-4*%pi,4*%pi,50); plot2d3(t,cos(t)) ได้ผลดังนี้ ![]() |
ขอบคุณผู้สนับสนุนHot Links |
Copyright© 2000-2007, Vcharkarn.Com. All rights reserved.
|
คลิ๊กเพื่อดูสถิติ รับรองและสนับสนุนโดย |
![]() สสวท. |
![]() มูลนิธิ พสวท. |
![]() พสวท. |