Có thể sử dụng Octave để học lập trình MATLAB không?


23

Tôi muốn học lập trình MATLAB để tôi có thể tự mình thực hiện một số phân tích / phân tích lại, để tôi có thể nghiên cứu / sửa đổi một số tập lệnh MATLAB mà tôi đã tìm thấy trực tuyến, v.v.

Tuy nhiên, vấn đề là tôi không đủ khả năng MATLAB. GNU Octave, từ những gì tôi đã nghe, khá tương thích MATLAB. Tuy nhiên, thách thức với Octave là tài liệu rất thưa thớt.

Vì vậy, MATLAB một mặt, rất tốn kém (-ve), nhưng có rất nhiều tài liệu, hướng dẫn và kịch bản trực tuyến (+), trong khi Octave là miễn phí (như trong bia), mặc dù (có thể hiểu được) nó thiếu tài liệu toàn diện, v.v. .

Tôi đang nghĩ đến việc tải xuống và cài đặt Octave, nhưng sử dụng tài liệu MATLAB (và tập lệnh) để giúp tôi bắt đầu. Tôi biết rằng có một số khác biệt giữa Octave và MATLAB - điều tôi đang cố gắng tìm hiểu là liệu sự khác biệt đó có đủ lớn để cản trở những nỗ lực của tôi để "học MATLAB một cách hiệu quả" bằng cách sử dụng Octave hay không.

Bất kỳ phản hồi mang tính xây dựng đều được chào đón.


3
Chào mừng, Homunculus. Chúng tôi chưa đầy hai tháng tuổi và chưa có nhiều thẻ. Tôi đã thêm thẻ quãng tám cho bạn.
David Ketcheson

một lựa chọn khác, nếu mục tiêu của bạn là chỉ sử dụng một phần mềm tính toán cho mục đích sử dụng cá nhân của bạn là Mathematica. Phiên bản đầy đủ hoàn chỉnh có sẵn cho sử dụng cá nhân dưới 300 đô la. Tôi không biết điều này có nằm trong ngân sách của bạn hay không. Nhưng đối với những gì người ta nhận được cho điều này (cùng phiên bản với phiên bản thương mại đầy đủ), tôi nghĩ nó đáng giá. lưu ý: Nếu bạn là sinh viên, thì Matlab và Mathicala cũng có sẵn cho sinh viên với mức giá tương đương.
Nasser

1
Trong một từ, có. Sự khác biệt giữa các ngôn ngữ là khá nhỏ. Tài liệu về Matlab có sẵn miễn phí trên Internet từ Mathworks.com (nhà sản xuất Matlab). Điều chính bạn sẽ bỏ lỡ là GUI của Matlab. Một GUI tốt cho Octave rất khó tìm. Phiên bản phát triển của Octave có GUI nhưng rất khó cài đặt. Tôi đã cài đặt QtOctave, mà tôi đã nhận được tại outsch.org/2011/01/29/qtoctave-0-10-1-for-windows . Nó hoạt động tốt, ngoại trừ luôn có thông báo lỗi khi khởi động và tôi không thể chấm dứt một quá trình mà không giết hoàn toàn Octave. Tôi sử dụng Notepad ++ ...
Stefan Smith

... Thay vì trình soạn thảo của QtOctave, và nó dường như hoạt động tốt hơn. Một điều nữa, sự khác biệt giữa Octave và Matlab, chẳng hạn như chúng, được ghi lại rộng rãi trên các trang web miễn phí.
Stefan Smith

Vì tôi không đủ danh tiếng để bình luận, tôi muốn thêm rằng một tuyên bố trong câu trả lời được chấp nhận: "Tất nhiên, có các tính năng của MATLAB (đặc biệt là trong các hộp công cụ, nhưng Octave không có những điều đó)" sai rồi. Octave có một bộ gói phong phú tại Octave-forge bao gồm mọi chức năng gói của Matlab mà tôi từng cần (Tôi làm việc trong xử lý và tối ưu hóa hình ảnh cho hình ảnh y tế và cần khá nhiều hộp / gói công cụ). Ngoài ra, câu trả lời được chấp nhận không giải quyết được một vấn đề lớn, đó là không có mã mà người hỏi viết sẽ có thể sử dụng được bởi các phòng thí nghiệm hoặc
indivi

Câu trả lời:


24

Tuyên bố miễn trừ trách nhiệm: Đôi khi tôi cảm thấy khó chịu khi ai đó cố gắng nói với tôi những gì họ nghĩ tôi nên làm hơn là trả lời câu hỏi tôi đã hỏi. Nhưng tôi sẽ mạo hiểm và đề nghị một giải pháp thay thế cho bạn.

Tôi sẽ đề nghị xem xét các gói tính toán khoa học của Python: numpy , matplotlibscipy . Cùng nhau, họ cung cấp cho bạn hầu hết các chức năng cốt lõi của MATLAB (trong một số trường hợp họ cung cấp cho bạn nhiều hơn MATLAB). Chúng là nguồn mở và miễn phí và ngày nay có thể có cơ sở người dùng rộng hơn Octave. Phần lớn cơ sở hạ tầng máy tính khoa học trong Python được Enth think Inc. hỗ trợ và tôi khuyên bạn nên cài đặt Phân phối Python Enth think miễn phí của họ , bao gồm cả ba gói tôi đã đề cập và hơn thế nữa.

Tất nhiên, có các tính năng của MATLAB (đặc biệt là trong các hộp công cụ, nhưng Octave không có những tính năng đó) mà Python thiếu. Nhưng tôi sử dụng Python kết hợp với các ngôn ngữ cấp thấp hơn trong hầu hết công việc của mình và nó cho phép tôi lập trình bằng ngôn ngữ gần như thuận tiện như MATLAB, giao diện với một loạt các gói hữu ích mà MATLAB không có và để chạy cùng mã dễ đọc trên siêu máy tính.

Chỉnh sửa : bạn cũng có thể muốn thử phân phối Anaconda Python từ Continuum Analytics. Có một phiên bản miễn phí bao gồm tất cả các gói trên và nhiều hơn nữa.


7
Điều này phụ thuộc vào việc Homunculus có muốn học MATLAB hay không vì họ đặc biệt cần học MATLAB (ví dụ, đối với công việc) hoặc họ muốn học MATLAB để làm máy tính khoa học, trong trường hợp Python có thể là lựa chọn tốt hơn do những hạn chế tài chính.
Geoff Oxberry

3
@DavidKetcheson: Tôi thực sự đang sử dụng numpy và matplotlib (vì tôi đã quen thuộc với Python). Tuy nhiên, tôi tiếp tục tìm thấy rất nhiều mã MATLAB, vì vậy tôi muốn có thể tìm hiểu từ các tập lệnh MATLAB có sẵn, v.v. (mà không phải bỏ phí bản quyền). Bên cạnh đó, việc lập trình MATLAB như một chiếc lông vũ trong mũ của tôi luôn luôn tốt - đó là lý do tại sao tôi nghĩ đến việc học MATLAB thông qua cửa sau (sử dụng Octave).
Homunculus Reticulli

+1 cho Python ở đây, nó cũng là một ngôn ngữ lập trình thực sự :) Mặc dù tôi nên nói rằng tôi đã bắt đầu bằng cách học MATLAB.
boyfarrell

Octave là một bản sao Matlab với giấy phép miễn phí. Cú pháp ngôn ngữ của nó gần như hoàn toàn tương thích. Python giải quyết một vấn đề rất khác so với Matlab và Octave. Cú pháp của nó phức tạp và dài dòng hơn nhiều vì ngôn ngữ linh hoạt hơn. Để tạo mẫu hệ thống tuyến tính, bạn sẽ sử dụng Matlab hoặc Octave, sau đó để triển khai phần mềm sẵn sàng sản xuất, bạn sẽ chuyển sang python / Java. Trước khi chuyển từ Matlab sang Python hoặc R, bạn nên hiểu những gì bạn đang tham gia.
FistOfFury

@FistOfFury Tôi sử dụng Python3 thuần túy cho các hệ thống tuyến tính. Đối với phần mềm sẵn sàng sản xuất, bạn thường sử dụng C / Fortran hoặc nhúng.
percusse

17

GNU Octave "hầu hết tương thích với Matlab", một số phép tinh tế nhất định có nghĩa là không phải tất cả các tập lệnh đều có thể chuyển từ MATLAB sang Octave.

Rất đáng để đọc tài liệu về ngôn ngữ và / hoặc ghi chú tương thích trong Câu hỏi thường gặp hoặc trên wikibooks . Ngoài ra còn có ghi chú porting .

Các gói tương tự như các hộp công cụ MATLAB tồn tại, nhưng bạn sẽ cần kiểm tra chúng để biết chúng giống nhau như thế nào. Ngoài ra, có những nỗ lực đối với các tập lệnh chuyển đổi quan tâm đến sự khác biệt giữa hai ngôn ngữ, nhưng theo hiểu biết của tôi thì không có gì là hoàn hảo.


12

Có, bạn có thể học MATLAB qua Octave. Nhưng cú pháp Octave ít hạn chế hơn và phù hợp hơn với các ngôn ngữ kịch bản hiện đại. MATLAB dường như đằng sau về mặt này. Xem liên kết wiki này Lập trình MATLAB / Sự khác biệt giữa Octave và MATLAB

Một sự khác biệt lớn đối với tôi là sự sẵn có của một số thư viện nhất định cho MATLAB nhưng không phải cho Octave.


9

Đối với việc học lập trình ngôn ngữ M nói chung và cách MATLAB hoạt động, vâng, Octave vẫn ổn. Tuy nhiên, nếu bạn cần một hộp công cụ cụ thể như một phần công việc của bạn và không ai thực hiện phiên bản miễn phí của nó, thì bạn đã hết may mắn.

Một phiên bản sinh viên của MATLAB không đắt lắm. Nếu bạn ở trường đại học, thậm chí có khả năng họ có giấy phép trang web. Bạn nên xem xét cả hai khả năng.


7

Tôi đã sử dụng Octave và MATLAB hoán đổi cho nhau trên cùng một đoạn mã trong quá khứ; Tôi không có vấn đề với khả năng tương thích. Sự khác biệt chính theo như tôi có thể nói là:

  1. MATLAB có thể được biên dịch byte và nhanh hơn một chút.
  2. Octave có thể sử dụng #hoặc %cho ý kiến, Matlab chỉ sử dụng%
  3. Octave sản xuất lô tốt hơn nhiều .

1
Tôi rất muốn nghe, về mặt nào thì Octave tạo ra các lô tốt hơn nhiều (không phải là tôi đặc biệt thích các lô MATLAB ...).
Dirk

Octave sử dụng gnuplot như một phụ trợ. Nó có thể chỉ là tôi thích gnuplot nhìn nhiều hơn. Điều cụ thể duy nhất tôi có thể nghĩ đến là tôi không phải làm gì đặc biệt để khử răng cưa; nó tự động kích hoạt.
Dan

1
Kinh nghiệm của tôi với âm mưu Octave đã được trộn lẫn, và sau khi học được một hoặc hai điều với MATLAB, chất lượng đồ họa tôi nhận được từ nó bây giờ rất tốt. Có lẽ bạn có một số ví dụ mà Octave vượt trội hơn Matab cho việc này? Aso, biên dịch byte? Bạn đang nói về bộ mã hóa MATLAB? Bạn không thể nhập mã MATLAB tùy ý vào công cụ đó và nếu tôi nhớ lại thì đây cũng là một công cụ khá đắt tiền, chắc chắn không có sẵn trong phiên bản được cấp phép của sinh viên.
Reid.Atcheson

Rất tiếc, tôi thấy những gì bạn có ý nghĩa cho việc biên soạn. Lỗi của tôi.
Reid.Atcheson

Tôi xin lỗi nhưng Matlab có nghĩa là gì có thể được biên dịch byte?
dùng17915

6

Điều này thực sự có thể, đặc biệt nếu bạn sử dụng GUI, chẳng hạn như GUIOctave . Một ngôn ngữ khác mà bạn có thể thấy hữu ích vì nhiều gói đã được viết cho nó là R. Ngoài ra còn có GUI cho ngôn ngữ R, được gọi là RStudio và tài liệu dịch giữa R và MatLab .


5

Về câu hỏi của bạn:
Tôi sẽ nói có. Đơn giản vì các mô hình và nguyên tắc là như nhau. Sự khác biệt trong cú pháp là không thể bỏ qua và có thể được tóm tắt trong một bảng cheat (trong trường hợp bạn đang làm việc chủ yếu với MATLAB một ngày).


Một đề xuất khác cho một giải pháp thay thế:
Là một giải pháp thay thế MATLAB tôi đang sử dụng SciLab . Nó miễn phí như Octave, có một cộng đồng tử tế cung cấp trợ giúp và hỗ trợ và tài liệu của nó khá tốt. Tài liệu tích hợp và trợ giúp cho các chức năng tương tự như tài liệu của MATLAB. (Điều tôi thích nhất là khả năng thực hiện các ví dụ chỉ bằng một cú nhấp chuột). Cú pháp tương tự như MATLAB.

Về những điểm tương đồng và khác biệt giữa SciLab và MATLAB, tài liệu này có thể khiến bạn quan tâm: Giới thiệu về Scilab từ quan điểm của người dùng Matlab, Eike Rietsch, tháng 5 năm 2010 (PDF) .

Một điểm cộng nữa cho SciLab so với MATLAB: Khởi động và GUI nhanh hơn rất nhiều. Tôi chưa thử Octave.


1
Tôi không phải là fan hâm mộ của Scilab, ấn tượng đầu tiên của tôi là đã có rất nhiều sự khác biệt nhỏ trong cú pháp và chức năng cơ bản (tương ứng với Matlab), nhưng không ai trong số các awsome rằng trăn có để bù đắp cho sự không tương thích.
mdaoust

Hừm ... theo nhận xét của bạn và David Ketcheson trả lời có vẻ như thực sự đáng để thử Python.
Torbjorn

5

Ví dụ thực tế:

Tôi sử dụng MATLAB tại nơi làm việc và tôi đã tham gia lớp học máy trực tuyến miễn phí của Stanford vào học kỳ trước.

Tôi đã làm tất cả các bài tập về nhà trong quãng tám.

Tôi chỉ nhận thấy 2 điểm khác biệt (tôi chỉ sử dụng chức năng cốt lõi):

  • Octave linh hoạt hơn một chút về những loại biểu thức có thể được lập chỉ mục. Vì vậy, nếu bạn tận dụng điều đó, mã của bạn sẽ không thể mang theo được.
  • Trong phần cài đặt của tôi, các ô pcolor () và image () không hoạt động đối với các mảng có kích thước hợp lý, như 1000x1000, các ô nhỏ, như 50x50, hoạt động tốt.

5

Có một số khác biệt tinh tế trong cách giải thích của Octave về ngôn ngữ lập trình của MATLAB. Octave sử dụng " endif" và " endwhile" để đóng ifwhilebáo cáo tương ứng. Octave cũng cho phép bạn khai báo các hàm trên dòng lệnh. Tuy nhiên, nó cũng nên phân tích bất cứ điều gì mà MATLAB phân tích cú pháp, vì vậy nếu bạn tuân theo ngôn ngữ lập trình của MATLAB, bạn sẽ ổn thôi.

Xin lưu ý rằng sự khác biệt lớn nhất giữa hai chương trình là ở các hàm tích hợp thực hiện hầu hết các công việc nặng về số, ví dụ: " quad", " ode15s" và như vậy. Tuy nhiên, tất cả các chức năng này phải được ghi lại rõ ràng khi sử dụng helplệnh "". Ngoài ra còn có danh sách gửi thư cho Octave nếu bạn có câu hỏi cụ thể hơn không được trợ giúp trực tuyến.


3
Octave rất vui khi chấp nhận "kết thúc" cho sự kết thúc của cả hai vòng lặp trong khi cả hai vòng lặp.
Bill Barth

4

Có bạn hoàn toàn có thể, tôi đã làm. Tuy nhiên, phần lớn năng lượng của MATLAB đi kèm với một số hộp công cụ và nội dung cực kỳ dễ sử dụng của nó có thể có hoặc không có tương đương trong Octave.

Ngoài ra, hãy lưu ý rằng mặc dù bản thân các ngôn ngữ cơ bản tương thích (ngoại trừ các tính năng OO mới trong MATLAB), Octave có một vài 'bổ sung' cho cú pháp, như có thể sử dụng "! =" Cho NEQ và nó cũng có một số thay thế các hành vi mặc định như cách nó phân tích các hàm nội tuyến. Đây là những điều nhỏ sẽ khiến mã Octave không chạy trong MATLAB ngay lập tức trừ khi bạn đã cẩn thận để tránh phụ thuộc vào hành vi đó.

Ngoài ra MATLAB là một môi trường điện toán đầy đủ, và không chỉ là một ngôn ngữ có giao diện với các thói quen đại số tuyến tính được tối ưu hóa. Vì vậy, những gì bạn học được từ Octave sẽ chỉ đi xa. Bạn sẽ hoạt động trong MATLAB nếu bạn thành thạo với Octave, nhưng bạn sẽ không làm việc hiệu quả với MATLAB như bạn có thể.


2

Ngôn ngữ miễn phí tốt nhất có cú pháp giống MATLAB là Julia. Nó cũng nhanh hơn và có hệ thống gói rộng hơn (trong số những lý do khác khiến nó tốt hơn ...), nhưng cú pháp đại số tuyến tính gần như giống hệt nhau (nhiều thuật toán bạn có thể dịch sang MATLAB bằng cách thay đổi A[i]để lập chỉ mục A(i)). Tôi tin rằng đây là ngôn ngữ tốt nhất để học ngay bây giờ và bạn sẽ "vô tình biết MATLAB" chỉ bằng cách sử dụng nó.


0

Có, bạn có thể học Matlab bằng Octave. Tất nhiên có một số hạn chế.

Octave và Matlab chia sẻ nhiều cú pháp của họ. Hai là có thể thay thế cho nhau trong khía cạnh đó. Trải nghiệm trong Matlab phong phú hơn và thân thiện với người dùng hơn, đặc biệt là khi làm việc với đồ họa, mặc dù Octave có giao diện người dùng đồ họa (GUI) mới đang trong giai đoạn thử nghiệm. Hai hệ thống có thể sẽ hội tụ hơn nữa khi môi trường đồ họa cho Octave được cải thiện.

Có rất nhiều khóa học miễn phí trên Coursera cung cấp cho bạn giấy phép sinh viên Matlab tạm thời miễn phí trong suốt thời gian của khóa học. Tìm kiếm các khóa học máy.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.