วิชาการ.คอม - คลังความรู้ ปัญญาไทย เพื่อการศึกษาไทย เพราะเรารักเมืองไทย
เว็บส่งเสริมการเรียนรู้ดีเด่น 2547 (สมาคมผู้ดูแลเว็บไทย)   |   เว็บสื่อวิทยาศาสตร์ดีเด่น 2549 (กระทรวงวิทย์)   |   เว็บการศึกษาที่มียอดผู้เข้าชมสูงสุด 2549, 2550 (TrueHits)
ขอขอบคุณ บริษัท ปตท. จำกัด (มหาชน) และ สสวท ที่ให้การสนับสนุน  
การฝึกเขียนโปรแกรม 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 ถามในกระทู้นี้นะครับ


MathGuy เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1988 ครั้ง - ได้รับดาวแล้ว 323 ดวง - โหวตเพิ่มดาว

จำนวน 194 ความเห็น, หน้า่ | 1| 2| 3| 4| 5| 6| 7| -8- 9| 10|
ความเห็นเพิ่มเติมที่ 138 21 มิ.ย. 2550 (08:10)
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.


MathGuy เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1988 ครั้ง - ได้รับดาวแล้ว 323 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 139 21 มิ.ย. 2550 (11:09)
แนะนำฟังก์ชัน rand() สำหรับสร้างตัวเลขสุ่ม ที่มีค่าระหว่าง 0 ถึง 1
......................................................................................


-->x=linspace(0,2,100);

-->for i=1:100, y(i)=rand(); end

-->plot2d3(x,y)

-->


ได้ผลดังนี้
43995

MathGuy เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1988 ครั้ง - ได้รับดาวแล้ว 323 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 140 22 มิ.ย. 2550 (16:23)
แนะนำการใช้ 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
44139

MathGuy เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1988 ครั้ง - ได้รับดาวแล้ว 323 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 141 22 มิ.ย. 2550 (16:32)
จะเห็นว่า 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)
44141

MathGuy เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1988 ครั้ง - ได้รับดาวแล้ว 323 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 142 23 มิ.ย. 2550 (17:12)
สวยมากค่ะ กราฟในแกนสามมิติ
ครูไผ่ เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 2312 ครั้ง - ได้รับดาวแล้ว 216 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 143 2 ก.ค. 2550 (14:19)
ใน MATLAB มีฟังก์ชัน stem() ซึ่งใช้ plot discrete function ผมอยากจะplot อย่างนั้นบ้างใน Scilab แต่หาฟังก์ชันที่ทำงานได้เหมือนกัน ไม่เห็นมีเลย รบกวนทุกท่านช่วยแนะนำด้วยครับ
Jimmy (IP:58.8.99.194)

ความเห็นเพิ่มเติมที่ 144 2 ก.ค. 2550 (14:48)
ฟังก์ชัน stem() ใน Matlab ที่คุณ Jimmy พูดถึง
เมื่อ plot แล้วได้หน้าตารูปร่างเป็นแบบไหนครับ

พอจะมีตัวอย่างให้ดูบ้างมั้ยครับ

( เผื่อจะได้ช่วยค้นหาว่า มีอะไรใน scilab ที่ใกล้เคียง หรือเหมือนกันหรือเปล่า ... และถ้าไม่มีจริงๆ เราก็อาจจะเขียน code ขึ้นมาเอง แล้ว save เก็บไว้ใช้งานก็ได้ครับ)
MathGuy เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1988 ครั้ง - ได้รับดาวแล้ว 323 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 145 4 ก.ค. 2550 (09:03)
เข้ามาอีกครั้งหนึ่ง

อยากดูคำสั่งการสร้างรูปสี่เหลี่ยมผืนผ้า ขนาดประมาณ 2*3 ตารางนิ้ว สีแดง เพียงรูปเดียว (เท่านั้นแหละ)
np (IP:202.57.179.17)

ความเห็นเพิ่มเติมที่ 146 4 ก.ค. 2550 (18:18)

-->plot2d(10,10,0)

-->xset("color",5)

-->xfrect(6,6,3,2)

-->xfrect(10,10,2,3)

-->


ได้รูป 4 เหลี่ยมผืนผ้าขนาด 2x3 และ 3x2 ดังนี้ครับ
44957

MathGuy เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1988 ครั้ง - ได้รับดาวแล้ว 323 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 147 4 ก.ค. 2550 (18:24)
ผมไปยืดรูปสเกลเลยเพี้ยนไป รูปสเกลเดิมเป็นดังนี้ครับ
44958

MathGuy เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1988 ครั้ง - ได้รับดาวแล้ว 323 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 148 4 ก.ค. 2550 (18:28)
44959
เอ ... ก็ยังดูเพี้ยนๆ ลองใส่

-->xgrid

ได้ผลดังนี้ครับ
MathGuy เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1988 ครั้ง - ได้รับดาวแล้ว 323 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 149 5 ก.ค. 2550 (15:11)
สวัสดีคับ ผมเป็นนักศึกษาอยู่ปี 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)

ความเห็นเพิ่มเติมที่ 150 5 ก.ค. 2550 (18:43)

การ plot ในทำนองที่คุณ thanakorn กล่าวถึง
ใน SciLab สามารถทำได้ ด้วยฟังก์ชัน

Matplot(A)

เมื่อ A เป็นเมตริกซ์ที่เก็บค่าสี

มีตัวอย่างที่เคยโพสต์ไว้ ในหน้าที่ 2 ความคิดเห็นที่ 81,82,83,84

MathGuy เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1988 ครั้ง - ได้รับดาวแล้ว 323 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 151 5 ก.ค. 2550 (18:47)
(ตัวอย่าง)

-->A=[1 8 1; 8 1 8; 1 8 1]
A =

1. 8. 1.
8. 1. 8.
1. 8. 1.

-->Matplot(A)


ได้ผลดังนี้
45044

MathGuy เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1988 ครั้ง - ได้รับดาวแล้ว 323 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 152 5 ก.ค. 2550 (18:52)
(ตัวอย่างเพิ่มเติม)

-->for i=1:20,
-->for j=1:20,
-->A(i,j)=int(10*rand());
-->end, end

-->Matplot(A)


สร้างเมตริกซ์ขนาด 20 x 20 และให้มีสมาชิกเป็นค่าสีที่เราสุ่มขึ้นมา
แล้วก็ให้ plot ออกมา

ได้ผลดังนี้
45045

MathGuy เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1988 ครั้ง - ได้รับดาวแล้ว 323 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 153 5 ก.ค. 2550 (19:02)
คุณ thanakorn ลองอ่านดูความคิดเห็น #137, 138 ด้วยนะครับ
MathGuy เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1988 ครั้ง - ได้รับดาวแล้ว 323 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 154 11 ก.ค. 2550 (11:15)
ขอบคุณมากครับ

ผมขอยกตัวอย่างฟังชั่นที่ผมค้นหาใน scilab นะคับ

เป็นฟังชั่นของ MatLab

a=imread('a.bmp');

เป็นฟังชั่นที่แปลงข้อมูลพิกเซลเป็นค่าความสว่างของสีอะคับ

กับอีกฟีงชั่น คือการรับค่า input จาก เมาร์ คับ

ขอถามคำถามอีกข้อนะคับ

SciLab สามารถทำงานร่วมกับ code ของ C++ ได้ใหมคับ

ขอบคุณร่วงหน้านะคับ
thanakorn / full_moon513@hotmail.com (IP:58.8.103.223)

ความเห็นเพิ่มเติมที่ 155 11 ก.ค. 2550 (17:16)
สวัสดีครับผม Jimmy ครับ แต่ user name ที่ใช้เป็น Grape ครับเพราะลงทะเบียนไม่ผ่าน
รูปตัวอย่าง ผมเอามาจากตัวอย่างของ MATLAB ครับ

ส่วนชุดคำสั่งเป็นดังนี้ครับ
t = linspace(-2*pi,2*pi,10);
h = stem(t,cos(t),'fill','--');
45564

Grape เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 2 ครั้ง - ได้รับดาวแล้ว 150 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 156 12 ก.ค. 2550 (09:24)
สำหรับ คำถามของคุณ Grape ผมลองค้นดูคร่าวๆ ยังไม่พบคำสั่งของ scilab ที่ใช้แสดงผลของกราฟให้เหมือนตามที่แสดงในรูป

ที่ใกล้เคียงกันมากที่สุด ก็จะมีคำสั่ง plot2d3() ของ scilab ลองดูตัวอย่างในคหพ#139 นะครับ

ผมเชื่อว่า เราน่าจะสามารถเขียน code (สั้นๆ) ของ scilab เองเพื่อเลียนแบบคำสั่ง stem()
ของ Matlab ได้

ขอเวลาผมค้นและทดลองดูสักหน่อยนะครับ ...
MathGuy เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1988 ครั้ง - ได้รับดาวแล้ว 323 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 157 12 ก.ค. 2550 (09:35)
(code ใน SciLab)

t=linspace(-4*%pi,4*%pi,50);
plot2d3(t,cos(t))

ได้ผลดังนี้
45583

MathGuy เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1988 ครั้ง - ได้รับดาวแล้ว 323 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติม วิชาการ.คอม

ชื่อ / email:
ข้อความ

รูปภาพ หรือ ไฟล์
กรุณาล๊อกอินก่อน เพื่อโพสต์รูปภาพ และ ใช้ LaTex ค่ะ สมัครสมาชิกฟรีตลอดชีพที่นี่
ตัวช่วย 1: CafeCode วิธีการใช้
ตัวช่วย 2: VSmilies วิธีการใช้
ตัวช่วย 3: พจนานุกรมไทย ออนไลน์ ฉบับราชบัณฑิต
ตัวช่วย 4 : dictionary ไทย<=>อังกฤษ ออนไลน์ จาก NECTEC
ตัวช่วย 5 : ดาวน์โหลด โปรแกรมช่วยพิมพ์ Latex เพื่อแสดงสมการบนวิชาการ.คอม

ขอบคุณผู้สนับสนุน

Hot Links

Google
 
ติดต่อลงโฆษณา :   คุณอันนา 086-4907600,
0-2583-2802
และ 086-4907585
สำนักงาน :   0-2642-7828
อีเมล์ :   
Copyright© 2000-2007, Vcharkarn.Com. All rights reserved.
คลิ๊กเพื่อดูสถิติ
รับรองและสนับสนุนโดย

สสวท.

มูลนิธิ พสวท.

พสวท.