เป็นไปได้ไหมที่จะใช้ Octave เพื่อเรียนรู้การเขียนโปรแกรม MATLAB?


23

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

อย่างไรก็ตามปัญหาคือฉันไม่สามารถจ่าย MATLAB ได้ GNU Octave จากสิ่งที่ฉันได้ยินมานั้นค่อนข้างเข้ากันได้กับ MATLAB ความท้าทายของ Octave คือว่าเอกสารนั้นกระจัดกระจายมาก

ดังนั้น MATLAB ในด้านหนึ่งจึงมีราคาแพง (-ve) แต่มีเอกสารประกอบแบบฝึกหัดและสคริปต์ที่ดีจำนวนมากทางออนไลน์ (+) ในขณะที่ Octave ไม่มีค่าใช้จ่าย (เช่นเดียวกับเบียร์) แม้ว่าจะไม่มีเอกสารที่ครอบคลุม ฯลฯ .

ฉันกำลังคิดที่จะดาวน์โหลดและติดตั้ง Octave แต่ใช้เอกสาร MATLAB (และสคริปต์) เพื่อช่วยให้ฉันดำเนินการต่อ ฉันทราบว่ามีความแตกต่างบางอย่างระหว่างอ็อกเทฟและ MATLAB - สิ่งที่ฉันพยายามทำคือความแตกต่างนั้นมีขนาดใหญ่พอที่จะขัดขวางความพยายามของฉันในการ "เรียนรู้ MATLAB โดยใช้อ็อกเทฟ" ได้อย่างมีประสิทธิภาพ

ยินดีรับข้อเสนอแนะที่สร้างสรรค์ใด ๆ


3
ยินดีต้อนรับ Homunculus เราอายุน้อยกว่าสองเดือนและยังไม่มีแท็กมากมาย ฉันได้เพิ่มแท็กระดับแปดเสียงสำหรับคุณ
David Ketcheson

ตัวเลือกอื่นหากเป้าหมายของคุณคือเพียงใช้ซอฟต์แวร์คำนวณสำหรับการใช้งานส่วนตัวของคุณก็คือ Mathematica เวอร์ชันสมบูรณ์แบบสมบูรณ์มีให้ใช้งานส่วนตัวน้อยกว่า $ 300 ฉันไม่รู้ว่าสิ่งนี้อยู่ในงบประมาณของคุณหรือไม่ แต่สำหรับสิ่งที่ได้รับสำหรับรุ่นนี้ (เวอร์ชั่นเดียวกับเวอร์ชั่นเชิงพาณิชย์เต็มรูปแบบ) มันคุ้มค่าที่ฉันจะคิด หมายเหตุ: หากคุณเป็นนักเรียน Matlab และ Mathematica ก็มีให้สำหรับนักเรียนในราคาเท่ากัน
นัสเซอร์

1
ในคำว่าใช่ ความแตกต่างระหว่างภาษานั้นค่อนข้างเล็ก เอกสารสำหรับ Matlab มีให้บริการฟรีบนอินเทอร์เน็ตจาก Mathworks.com (ผู้ผลิต Matlab) สิ่งสำคัญที่คุณจะพลาดคือ GUI ของ Matlab GUI ที่ดีสำหรับ Octave หายาก Octave เวอร์ชันพัฒนามี GUI แต่ติดตั้งยาก ผมติดตั้ง QtOctave ซึ่งผมได้ที่outsch.org/2011/01/29/qtoctave-0-10-1-for-windows มันทำงานได้ดียกเว้นมีข้อผิดพลาดเสมอเมื่อเริ่มต้นและฉันไม่สามารถยุติกระบวนการโดยไม่ฆ่า Octave โดยสิ้นเชิง ฉันใช้ Notepad ++ ...
Stefan Smith

... แทนที่จะเป็นเครื่องมือแก้ไขของ QtOctave และดูเหมือนว่าจะทำงานได้ดีขึ้น อีกสิ่งหนึ่งความแตกต่างระหว่างอ็อกเทฟและ Matlab เช่นนั้นได้รับการบันทึกไว้อย่างกว้างขวางในเว็บไซต์ฟรี
Stefan Smith

เนื่องจากฉันไม่มีชื่อเสียงพอที่จะแสดงความคิดเห็นฉันต้องการเพิ่มคำแถลงในคำตอบที่ยอมรับ: "แน่นอนมีคุณสมบัติของ MATLAB (โดยเฉพาะในกล่องเครื่องมือ แต่ Octave ไม่มีคำเหล่านี้)" ไม่ถูกต้อง. Octave มีแพ็คเกจมากมายที่ Octave-forge ซึ่งรวมถึงฟังก์ชั่นแพคเกจทุกอย่างของ Matlab ที่ฉันต้องการ (ฉันทำงานในการประมวลผลภาพและการเพิ่มประสิทธิภาพสำหรับภาพทางการแพทย์และต้องการกล่องเครื่องมือ / แพ็คเกจค่อนข้างน้อย) นอกจากนี้คำตอบที่ได้รับการยอมรับไม่ได้แก้ไขปัญหาสำคัญซึ่งก็คือว่าไม่มีรหัสที่ผู้เขียนถามจะสามารถใช้งานได้โดยห้องปฏิบัติการหรือ
indivi

คำตอบ:


24

ข้อจำกัดความรับผิดชอบ: บางครั้งฉันรู้สึกรำคาญเมื่อมีคนพยายามบอกฉันว่าพวกเขาคิดว่าฉันควรทำอะไรมากกว่าตอบคำถามที่ฉันถาม แต่ฉันจะเสี่ยงและแนะนำทางเลือกให้กับคุณ

ฉันขอแนะนำให้ดูที่แพคเกจการคำนวณทางวิทยาศาสตร์ ธ : numpy , matplotlibและ SciPy เมื่อรวมเข้าด้วยกันพวกเขาจะมอบฟังก์ชันการทำงานหลักให้กับ MATLAB (ในบางกรณีพวกเขาให้คุณมากกว่า MATLAB) พวกมันฟรีและโอเพ่นซอร์สและทุกวันนี้อาจมีฐานผู้ใช้ที่กว้างกว่าอ็อกเทฟ โครงสร้างพื้นฐานการคำนวณทางวิทยาศาสตร์ส่วนใหญ่ใน Python ได้รับการสนับสนุนโดยEnsequt Inc.และฉันขอแนะนำให้คุณติดตั้งEnythont Python Distributionฟรีซึ่งรวมถึงแพ็คเกจทั้งสามที่ฉันกล่าวถึงและอื่น ๆ

แน่นอนว่ามีคุณสมบัติของ MATLAB (โดยเฉพาะในกล่องเครื่องมือ แต่ Octave ไม่มีคุณสมบัติเหล่านี้) ที่ Python ขาด แต่ฉันใช้ Python ร่วมกับภาษาระดับต่ำกว่าสำหรับงานส่วนใหญ่ของฉันและช่วยให้ฉันสามารถเขียนโปรแกรมในภาษาเกือบจะสะดวกเท่ากับ MATLAB ส่วนต่อประสานกับโฮสต์ของแพ็คเกจที่มีประโยชน์ที่ MATLAB ไม่มีและเรียกใช้ รหัสที่อ่านง่ายเหมือนกันบนซูเปอร์คอมพิวเตอร์

แก้ไข : คุณอาจต้องการลองใช้การกระจาย Anaconda Pythonจากการวิเคราะห์ต่อเนื่อง มีรุ่นฟรีที่มีแพ็คเกจด้านบนทั้งหมดและอีกมากมาย


7
มันขึ้นอยู่กับว่า Homunculus ต้องการเรียนรู้ MATLAB หรือไม่เพราะพวกเขาต้องการเรียนรู้ MATLAB (ตัวอย่างเช่นสำหรับงาน) โดยเฉพาะหรือต้องการเรียนรู้ MATLAB เพื่อทำการคำนวณทางวิทยาศาสตร์ในกรณีนี้ Python อาจเป็นทางเลือกที่ดีกว่าเนื่องจากข้อ จำกัด ทางการเงิน
Geoff Oxberry

3
@DavidKetcheson: จริง ๆ แล้วฉันใช้ numpy และ matplotlib (เนื่องจากฉันคุ้นเคยกับ Python) อย่างไรก็ตามฉันยังคงมีรหัส MATLAB อยู่เรื่อย ๆ ดังนั้นฉันจึงต้องการเรียนรู้จากสคริปต์ MATLAB ที่มีอยู่และอื่น ๆ (โดยไม่ต้องแยกออกจากค่าธรรมเนียมใบอนุญาต) นอกจากนี้มันดีเสมอที่จะมีการเขียนโปรแกรม MATLAB ในฐานะขนนกพิเศษในหมวกของฉัน - นั่นเป็นเหตุผลว่าทำไมฉันจึงคิดที่จะเรียนรู้ MATLAB ผ่านทางลับๆ (ใช้ Octave)
Homunculus Reticulli

+1 สำหรับ Python ที่นี่เป็นภาษาโปรแกรมจริงด้วย :) แม้ว่าฉันควรจะบอกว่าฉันเริ่มต้นด้วยการเรียนรู้ MATLAB
boyfarrell

Octave เป็นโคลน Matlab พร้อมใบอนุญาตฟรี ไวยากรณ์ภาษามันเกือบจะเข้ากันได้อย่างสมบูรณ์ Python แก้ปัญหาที่แตกต่างจาก Matlab และ Octave ไวยากรณ์มีความซับซ้อนและละเอียดมากขึ้นเนื่องจากภาษามีความหลากหลายมากขึ้น สำหรับการสร้างต้นแบบระบบเชิงเส้นคุณจะต้องใช้ Matlab หรือ Octave จากนั้นสำหรับการใช้งานซอฟต์แวร์ที่พร้อมใช้งานจริงคุณจะต้องย้ายไปยัง python / Java ก่อนที่จะเปลี่ยนจาก Matlab เป็น Python หรือ R คุณควรเข้าใจสิ่งที่คุณกำลังทำ
FistOfFury

@FistOfFury ฉันใช้ Python3 บริสุทธิ์สำหรับระบบเชิงเส้น สำหรับซอฟต์แวร์ที่พร้อมใช้งานสำหรับการผลิตคุณมักจะเลือกใช้ C / Fortran หรือฝังตัว
ตรวจสอบ

17

GNU Octave เป็น "ส่วนใหญ่เข้ากันได้กับ Matlab" บางรายละเอียดปลีกย่อยหมายความว่าสคริปต์ทั้งหมดไม่สามารถพกพาได้จาก MATLAB ถึง Octave

เป็นมูลค่าการอ่านเอกสารสำหรับภาษาและ / หรือความเข้ากันได้บันทึกในคำถามที่พบบ่อยหรือในตำรา นอกจากนี้ยังมีการย้ายบันทึก

มีแพ็คเกจคล้ายกับกล่องเครื่องมือ MATLAB อยู่ แต่คุณจะต้องตรวจสอบมันเพื่อดูว่ามันมีความคล้ายคลึงกันอย่างไร นอกจากนี้ยังมีความพยายามในสคริปต์การแปลงที่ดูแลความแตกต่างระหว่างสองภาษา แต่สำหรับความรู้ของฉันไม่มีใครที่สมบูรณ์แบบ


12

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

ข้อแตกต่างที่สำคัญอีกประการสำหรับฉันคือความพร้อมใช้งานของบางไลบรารีสำหรับ MATLAB แต่ไม่ใช่สำหรับ Octave


9

สำหรับการเรียนรู้การเขียนโปรแกรมภาษา M โดยทั่วไปและวิธีการทำงานของ MATLAB ก็ใช่ว่าอ็อกเทฟก็ใช้ได้ดี หากคุณต้องการกล่องเครื่องมือเฉพาะซึ่งเป็นส่วนหนึ่งของงานของคุณและไม่มีใครใช้งานเวอร์ชันฟรีได้แสดงว่าคุณไม่มีโชค

MATLAB รุ่นนักเรียนนั้นไม่แพงเลย หากคุณอยู่ในมหาวิทยาลัยก็เป็นไปได้ว่าพวกเขามีใบอนุญาตไซต์ คุณควรพิจารณาถึงความเป็นไปได้ทั้งสองอย่าง


7

ฉันเคยใช้ Octave และ MATLAB สลับกันได้กับโค้ดชิ้นเดียวกันในอดีต ฉันไม่มีปัญหากับความเข้ากันได้ ความแตกต่างที่สำคัญเท่าที่ฉันสามารถบอกได้คือ:

  1. MATLAB สามารถคอมไพล์ด้วยไบต์และเร็วขึ้นเล็กน้อย
  2. ระดับแปดเสียงสามารถใช้อย่างใดอย่างหนึ่ง#หรือ%สำหรับความคิดเห็น Matlab ใช้เท่านั้น%
  3. Octave ผลิตมากแปลงที่ดีขึ้น

1
ฉันสนใจที่จะฟังสิ่งที่ Octave ให้ความสำคัญกับแผนการที่ดีกว่า (ไม่ใช่ว่าฉันชอบแปลง MATLAB โดยเฉพาะ ... )
เดิร์ค

Octave ใช้ gnuplot เป็นแบ็กเอนด์ อาจเป็นได้ว่าฉันชอบ gnuplot ดูมากกว่านี้ สิ่งที่เฉพาะเจาะจงเท่านั้นที่ฉันนึกได้คือฉันไม่ต้องทำอะไรเป็นพิเศษเพื่อลดรอยหยัก มันเปิดใช้งานโดยอัตโนมัติ
Dan

1
ประสบการณ์ของฉันกับการวางแผน Octave ได้รับการผสมและหลังจากเรียนรู้สิ่งหนึ่งหรือสองกับ MATLAB คุณภาพของกราฟิกที่ฉันได้รับจากตอนนี้ดีมาก บางทีคุณอาจมีตัวอย่างที่ Octave มีประสิทธิภาพเหนือกว่า Matab สำหรับเรื่องนี้? นอกจากนี้ยังรวบรวมไบต์? คุณกำลังพูดถึง coder MATLAB หรือไม่ คุณไม่สามารถใส่รหัส MATLAB โดยพลการลงในเครื่องมือนั้นได้และถ้าฉันจำได้ว่ามันเป็นเครื่องมือที่ค่อนข้างแพงเช่นกันแน่นอนว่าไม่มีในรุ่นลิขสิทธิ์ของนักเรียน
Reid.Atcheson

อ๊ะฉันเห็นว่าคุณหมายถึงอะไรสำหรับการรวบรวม ความผิดของฉัน.
Reid.Atcheson

ฉันขอโทษ แต่ Matlab หมายถึงอะไรสามารถแปลเป็น byte ได้?
user17915

6

มันเป็นไปได้แน่นอนโดยเฉพาะอย่างยิ่งถ้าคุณใช้ GUI เช่นGUIOctave ภาษาที่คุณอาจพบว่ามีประโยชน์เพราะหลายแพ็กเกจได้รับการเขียนมันก็คืออาร์นอกจากนี้ยังมีแบบ GUI สำหรับภาษา R ที่เรียกว่า RStudio และเอกสารการแปลระหว่าง R และ MatLab


5

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


ข้อเสนอแนะก็หาทางเลือก:
ในฐานะที่เป็นทางเลือก MATLAB ฉันใช้SciLab ได้ฟรีเป็น Octave มีชุมชนที่เหมาะสมที่ให้ความช่วยเหลือและสนับสนุนและเอกสารประกอบนั้นค่อนข้างดี เอกสารประกอบในตัวและวิธีใช้ฟังก์ชั่นคล้ายกับของ MATLAB (สิ่งที่ฉันชอบมากที่สุดคือความสามารถในการดำเนินการตัวอย่างได้ด้วยคลิกเดียว) ไวยากรณ์คล้ายกับ MATLAB เช่นกัน

เกี่ยวกับความเหมือนและความแตกต่างระหว่าง SciLab และ MATLAB เอกสารนี้อาจจะเป็นที่น่าสนใจสำหรับคุณ: แนะนำ Scilab จากจุดที่ผู้ใช้ Matlab ในมุมมองของ Eike Rietsch พฤษภาคม 2010 (PDF)

ข้อดีอีกอย่างของ SciLab บน MATLAB: การเริ่มต้นทำงานและ GUI นั้นเร็วกว่ามาก ฉันยังไม่ได้ลอง Octave


1
ฉันไม่ใช่แฟนของ Scilab ความประทับใจครั้งแรกของฉันคือมีความแตกต่างเล็กน้อยในด้านไวยากรณ์และฟังก์ชั่นพื้นฐาน (เทียบกับ Matlab) แต่ไม่มีอะไรน่าประหลาดใจที่ไพ ธ อนทำขึ้นสำหรับความไม่ลงรอยกัน
mdaoust

หืม ... ตามความคิดเห็นของคุณและคำตอบของ David Ketcheson ดูเหมือนว่ามันคุ้มค่าที่จะลองใช้ Python
Torbjörn

5

ตัวอย่างการปฏิบัติ:

ฉันใช้ MATLAB ในที่ทำงานและฉันเรียนวิชาเรียนออนไลน์ผ่านเครื่องออนไลน์ฟรีของ Stanford

ฉันทำการบ้านทั้งหมดในระดับแปดเสียง

ฉันสังเกตเห็นเพียง 2 ข้อแตกต่าง (ฉันใช้ฟังก์ชันการทำงานหลักเท่านั้น):

  • อ็อกเทฟนั้นมีความยืดหยุ่นมากกว่าเล็กน้อยเกี่ยวกับการจัดทำดัชนีนิพจน์ ดังนั้นหากคุณใช้ประโยชน์จากรหัสนั้นจะไม่สามารถพกพาได้
  • ในการติดตั้งของฉันpcolor ()และ image () แปลงไม่ทำงานสำหรับอาร์เรย์ที่มีขนาดพอสมควรเช่น 1,000x1000 เล็ก ๆ เช่น 50x50 ทำงานได้ดี

5

มีความแตกต่างเล็กน้อยในการตีความของอ็อกเทฟของภาษาโปรแกรม MATLAB ระดับแปดเสียงใช้ " endif" และ " endwhile" เพื่อปิดifและwhileคำสั่งตามลำดับ อ็อกเทฟยังช่วยให้คุณประกาศฟังก์ชั่นในบรรทัดคำสั่ง อย่างไรก็ตามควรแยกวิเคราะห์อะไรก็ตามที่ MATLAB วิเคราะห์เช่นกันดังนั้นหากคุณยึดมั่นในภาษาการเขียนโปรแกรมของ MATLAB คุณก็ควรจะปรับ

โปรดทราบว่าความแตกต่างที่ยิ่งใหญ่ที่สุดระหว่างสองโปรแกรมนั้นอยู่ในฟังก์ชั่นในตัวที่ใช้ในการยกตัวเลขหนักเช่น " quad", " ode15s" และอื่น ๆ อย่างไรก็ตามฟังก์ชั่นเหล่านี้ทั้งหมดควรได้รับการบันทึกไว้อย่างดีเมื่อใช้helpคำสั่ง "" นอกจากนี้ยังมีรายการส่งเมลสำหรับอ็อกเทฟหากคุณมีคำถามเพิ่มเติมที่ไม่ได้รับความช่วยเหลือออนไลน์


3
อ็อกเทฟมีความสุขมากกว่าที่จะยอมรับ "จุดจบ" ในตอนท้ายของทั้งสองขณะลูปและถ้ามีสถานะ
Bill Barth

4

ใช่คุณสามารถทำได้อย่างฉัน อำนาจส่วนใหญ่ของ MATLAB นั้นมาพร้อมกับกล่องเครื่องมือและบิวด์อินบางตัวที่ใช้งานง่ายซึ่งอาจมีหรือไม่มีการเทียบเท่าใน Octave

โปรดทราบว่าในขณะที่ภาษาพื้นฐานนั้นสามารถใช้งานร่วมกันได้ (ยกเว้นคุณลักษณะใหม่ของ OO ใน MATLAB) Octave มีการเพิ่มเติม 'เล็กน้อย' ในไวยากรณ์เช่นสามารถใช้ "! =" สำหรับ NEQ และยังมีบางอย่าง พฤติกรรมเริ่มต้นทางเลือกเช่นวิธีที่มันแยกวิเคราะห์ฟังก์ชั่นแบบอินไลน์ สิ่งเหล่านี้เป็นสิ่งเล็ก ๆ น้อย ๆ ที่จะทำให้รหัส Octave ไม่สามารถทำงานใน MATLAB ได้ทันทีนอกเสียจากว่าคุณจะได้รับการดูแลเพื่อหลีกเลี่ยงการพึ่งพาพฤติกรรมนั้น

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


2

ภาษาฟรีที่ดีที่สุดซึ่งมีไวยากรณ์เหมือน MATLAB คือ Julia นอกจากนี้ยังเร็วกว่าและมีระบบแพ็กเกจที่ครอบคลุมมากขึ้น (ด้วยเหตุผลอื่น ๆ ว่าทำไมจึงดีกว่า ... ) แต่ไวยากรณ์พีชคณิตเชิงเส้นเกือบจะเหมือนกันทุกประการ (อัลกอริทึมมากมายที่คุณสามารถแปลเป็น MATLAB ได้โดยเปลี่ยนA[i]ดัชนีเป็นA(i)) ฉันเชื่อว่ามันเป็นภาษาที่ดีที่สุดในการเรียนรู้ในตอนนี้และคุณจะ "รู้ MATLAB" โดยไม่ตั้งใจเพียงใช้มัน


0

ใช่คุณสามารถเรียนรู้ Matlab โดยใช้อ็อกเทฟ แน่นอนว่ามีข้อ จำกัด อยู่บ้าง

Octave และ Matlab ใช้ไวยากรณ์ร่วมกันมาก ทั้งสองสามารถใช้แทนกันได้ในส่วนที่ ประสบการณ์ใน Matlab นั้นสมบูรณ์กว่าและเป็นมิตรกับผู้ใช้โดยเฉพาะอย่างยิ่งเมื่อทำงานกับกราฟิกแม้ว่า Octave จะมีส่วนต่อประสานกราฟิกกับผู้ใช้ (GUI) ใหม่ที่อยู่ในช่วงเบต้า ทั้งสองระบบมีแนวโน้มที่จะมาบรรจบกันต่อไปเนื่องจากสภาพแวดล้อมแบบกราฟิกสำหรับอ็อกเทฟดีขึ้น

มีหลักสูตรฟรีมากมายใน Coursera ที่ให้สิทธิ์นักเรียน Matlab ชั่วคราวฟรีตลอดระยะเวลาของหลักสูตร ค้นหาหลักสูตรการเรียนรู้ของเครื่อง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.