Tại sao / khi nào tôi nên thích MATLAB hơn Octave?


82

Trong hoạt động hiệu quả nhất, chúng tôi cần tạo các thuật toán nguyên mẫu bằng một số ngôn ngữ cấp cao hơn trước khi cam kết triển khai C trên phần cứng nhúng.

Cho đến nay, chúng tôi đang sử dụng MATLAB để làm điều đó, nhưng chi phí cấp phép đang bắt đầu giảm. Chúng tôi đang xem xét chuyển mã MATLAB của mình sang Octave.

Có bất kỳ lý do cụ thể không làm điều đó? Liệu chúng ta có phá vỡ bất kỳ tính tương thích nào không, đặc biệt nếu chúng ta có các đối tác bên ngoài khăng khăng sử dụng MATLAB? Có bất kỳ hình phạt hiệu suất nào mà chúng tôi có thể mong đợi không?


7
Bạn nên xem xét chi phí di chuyển và đào tạo.
Daniel Moura

10
Tại sao không phải là Python? stackoverflow.com/questions/1776290/… NumPy dành cho người dùng MATLAB: mathesaurus.sourceforge.net/matlab-numpy.html
Mikhail

5
@Mikhail: Do giao tiếp với các đối tác sử dụng Matlab.
Jonas

2
@Jonas: đối tác bên ngoài có thể được thuyết phục quá ... Nếu họ nhìn thấy tất cả mọi người đang nói về chuyển đổi sang Python ...
Mikhail

Câu trả lời:


52

Năm 2008, tôi đã thử làm điều tương tự. Tôi nhanh chóng nhận thấy các nút chặn chương trình sau:

  • Hộp công cụ không hoàn chỉnh và không được kiểm tra tốt. Đặc biệt là hộp công cụ xử lý hình ảnh mà công việc của tôi chủ yếu dựa vào (nút chặn lớn nhất là imtransform không được thực hiện).
  • Trình gỡ lỗi Octave và trình biên dịch là nguyên thủy so với Matlab.
  • Nếu bạn làm việc với người khác, có thể rất khó để khiến họ thay đổi.
  • Nếu bạn sử dụng hộp công cụ của bên thứ ba, bạn tự mình bắt chúng hoạt động.
  • Các âm mưu của Octave không phải là chất lượng xuất bản.

Nhưng tôi phải nói rằng tôi nói chung rất ấn tượng về mức độ tương thích của Octave với Matlab, nếu việc sử dụng Matlab của bạn là cơ bản, bạn có thể gặp may. Cuối cùng thì đây là năm 2008, trong hai năm nữa mọi thứ có thể thay đổi rất nhiều.


8
Tôi không nghĩ vấn đề có liên quan gì đến người dùng MATLAB. Thật tuyệt là có một giải pháp thay thế phần mềm nguồn mở và những người muốn nỗ lực như vậy sẽ làm như vậy. Mọi người có thể làm với thời gian của họ bất cứ điều gì họ muốn làm. Chỉ trích người dùng của một chương trình nhất định là một trò trẻ con.
carlosdc

2
Đối với bất cứ ai quan tâm, nó sau liên kết cho Octave 3.8 cài đặt Windows: mxeoctave.osuv.de
juliohm

2
Những vấn đề này có thể được giải quyết thông qua trang web bountysource.com/teams/gnu-octave/issues với chi phí thấp hơn mười lần so với một giấy phép Matlab.
Sergei

2
Kể từ năm 2017, bạn thực sự nên thử. Bạn sẽ ngạc nhiên rằng hầu hết, nếu không phải là tất cả, các tập lệnh MATLAB của bạn sẽ cạn kiệt (ngoại trừ các hộp công cụ cụ thể), bạn phải dành một buổi chiều để sửa một số điểm không tương thích nhỏ. Một sớm một chiều so với lợi ích của việc phát triển trên phần mềm nguồn mở, không có giấy phép là gì?
Hugo Raguet

24

Chỉ ngoài đỉnh đầu của tôi:

  1. Có rất nhiều hộp công cụ mà Octave không có, như tôi đã phát hiện ra khi tôi cố gắng làm bài tập về nhà trong khóa học Máy học hai học kỳ trước.
  2. Octave có một trình gỡ lỗi kém hơn nhiều. Nó gần như không thể làm việc với.
  3. Matlab nhanh hơn nhiều đối với nhiều loại hoạt động.
  4. Các âm mưu của Matlab đẹp hơn rất nhiều.
  5. Octave không có GUI gốc. Có GUI cho Octave, nhưng chúng kém hơn so với GUI gốc của Matlab.

+1 cho điểm # 5. Tôi thậm chí còn chưa tìm thấy GUI miễn phí cho Octave mà tôi có thể cài đặt và nó hoạt động đáng tin cậy, chứ đừng nói đến một cái tốt. SciLab có thể là một sự thay thế tốt cho Matlab, nhưng tôi không biết nó tốt như thế nào đối với các điểm # 1-4.
Stefan Smith

15

Tôi đã thử nghiệm quãng tám và cả R nữa.

Về quãng tám: Tôi rất ấn tượng với sự giống nhau của cú pháp quãng tám. Tôi không mất nhiều thời gian để vận chuyển các tập lệnh MATLAB của mình sang quãng tám. Meanwihile Tôi có một vấn đề cụ thể về việc in các điểm đánh dấu cùng với thanh lỗi đã được Jarno Rajahalme khắc phục tại nabble và để thay đổi kích thước phông chữ xtick, cách giải quyết mà tôi nhận được trong câu trả lời câu hỏi tại nabble. Vì vậy, nó vẫn có một số lỗi mà với một số nỗ lực có thể được khắc phục. Nếu bạn gặp một số vấn đề, bạn có thể thử diễn đàn gửi thư nabble: help-octave@octave.org. Nhân tiện, nhóm của tôi không thể thích ứng (thân thiện với người dùng) với nó, chẳng hạn như họ thích ứng với MATLAB, vì vậy chúng tôi vẫn đang sử dụng MATLAB. Vì MATLAB được xây dựng dưới gnuplot, một cách khác để sửa lỗi của nó là chỉnh sửa tệp gnuplot đã tạo. IDE tốt nhất mà tôi tìm thấy là QtOctave, mà tôi đã thực hiện một bài đánh giá ngắn trong "

Về R: theo một nghiên cứu được thực hiện bởi SciViews, hiệu suất của R vượt trội hơn MATLAB và quãng tám. Tôi không có nhiều kinh nghiệm với R. Tôi đã nghiên cứu gói mclust để viết một chương wikibook về EM Clustering bằng R. Nhân tiện, họ dường như có một cộng đồng rất tích cực. Vì vậy, bạn có thể tìm thấy các gói của bên thứ ba đối với các đề xuất, vốn không được IMO tiêu chuẩn hóa. IDE tốt nhất mà tôi tìm thấy là plugin StatET cho eclipse, JGR (Java GUI cho R) và emacs. Bất chấp chi phí thời gian để học một ngôn ngữ lập trình mới, nếu tôi muốn chọn một nền tảng mã nguồn mở để làm đồ họa thử nghiệm và một số phân tích khai thác dữ liệu, tôi sẽ thử R.


10

Octave có một số cải tiến cú pháp trên matlab, chẳng hạn như bạn có thể nói endif endforendfunctionthay vì chỉ end, giúp gỡ lỗi dễ dàng hơn nhiều.

Octave cũng cho phép bạn tạo động các hàm và có nhiều hàm được xác định trong các tập lệnh và tệp hàm. Cách nào đẹp hơn cách tiếp cận một tệp-một-chức năng của matlab.

Cuối cùng, octave có parcellfunpararrayfunđó là những công cụ xử lý song song rất mạnh mẽ mà matlab hoàn toàn thiếu. Có một parfortrong matlab, nhưng nó không phải là cách tốt nhất để làm điều đó theo quan điểm của tôi.

Nhược điểm của quãng tám là chúng hơi trễ trên các hộp công cụ, mặc dù nếu để ý bạn có thể thấy những thứ tương tự. fsolvelsodecó vẻ chậm hơn một chút, nhưng mạnh mẽ hơn, ở quãng tám vì một số lý do. Ngoài ra, một điều đáng tiếc đối với một số người là thiếu liên kết tượng trưng và hộp công cụ DAQ, nhưng dù sao thì thứ đó cũng sẽ là độc quyền.

Python / Numpy chắc chắn đáng để thử: nó mạnh hơn nhưng cú pháp của chúng lại nhắm vào các đoạn mã phức tạp hơn.


1
Tôi chỉ mới thử nó và theo như tôi có thể nói, pararrayfun / parcellfun không được hỗ trợ trên Windows (cũng không phải nguyên bản không có Cygwin) failed to open pipe: pipe: not supported on this system. Tôi đang sử dụng các tệp nhị phân Windows dựng sẵn Octave_3.6.1_VS2010.
Amro

2
vâng, tôi đoán đó là do sự khác biệt về cách chạy các tập lệnh shell trong windows và Linux, vì pararrayfun / parcelfun hoạt động bằng cách sinh ra một số quy trình con. Tôi không biết điều này sẽ hoạt động như thế nào trên các cửa sổ, tôi thậm chí không chắc liệu tệp nhị phân của cửa sổ có được thực thi trong một trình bao hay không hoặc nếu nó được mô phỏng?
user1240280

1
quá xấu, một (portable) phiên bản song song của cellfun / arrayfunc có vẻ như là một ý tưởng tốt ... Có lẽ MATLAB nên những quá :)
Amro

@ user1240280: có thể xác định các chức năng trong một tập lệnh IMHO là một lợi thế lớn của Octave so với Matlab. Nó cho phép bạn viết toàn bộ chương trình theo kiểu mô-đun và giữ nó trong một tệp, vì vậy bạn có thể dễ dàng gửi nó cho chính mình hoặc người khác. Nhưng việc Octave thiếu GUI là một nhược điểm lớn.
Stefan Smith

@stefan smith: Octave hiện đã có GUI gốc, vẫn đang thử nghiệm nhưng từ những trải nghiệm gần đây của tôi, nó khá hữu dụng và ít nhiều ổn định. bạn có thể thử nó ra vớioctave --force-gui
Legionair

9

Octave không có guide, điều này làm cho việc xây dựng GUI cực kỳ dễ dàng. Tôi thường xuyên sử dụng hướng dẫn tạo công cụ cho không phải MATLAB của mình bằng cách sử dụng đồng nghiệp.


6
Octave có hướng dẫn tương đương không? Đó có phải là lý do tại sao tôi bị bỏ phiếu không?
Doresoom

8

Đối với trường hợp sử dụng của bạn, quãng tám có thể vượt trội hơn MATLAB:

  • Nó có cú pháp cho phép bạn viết mã gần hơn một chút với C. tức là + =, - =, các giá trị tham số hàm mặc định, chuỗi ký tự được trích dẫn kép, v.v.

  • Giả sử chip của bạn chậm hơn bộ xử lý máy tính để bàn, tốc độ có thể sẽ không phải là vấn đề.

  • Vì nó khởi chạy nhanh hơn nhiều so với matlab, nên việc tích hợp vào các tập lệnh shell để thử nghiệm sẽ thực tế hơn.

  • Đối với việc tạo mẫu, việc vẽ sơ đồ là quá đủ; mọi người chỉ quen với phong cách của MATLAB.

  • Việc thiếu tương đối các hộp công cụ không phải là vấn đề lớn vì dù sao thì chúng cũng sẽ không có sẵn trên nền tảng mục tiêu của bạn.

Tôi sử dụng cả hai và bất cứ khi nào tôi chuyển đổi, tôi đều bỏ lỡ các tính năng của cái kia.


6

Thật thú vị khi xem cách thay thế mã nguồn mở hoạt động cho thống kê nhưng không cho phân tích số. R (quãng tám của thống kê) ngày nay phổ biến hơn nhiều so với S-plus thương mại (matlab thống kê). Các vấn đề được đề cập như lý do không nên chuyển từ matlab được tìm thấy trong các câu trả lời khác cũng có thể áp dụng cho R. Nhưng mọi người vẫn chỉ bắt đầu đóng góp và bây giờ R là tiêu chuẩn, với đồ họa tốt hơn, gói tốt hơn và không còn khóa nhà cung cấp nữa.

Vì vậy, bạn cũng có thể thích quãng tám hơn matlab, nếu bạn có thể vượt qua tình huống khó xử của tù nhân.


4
Bạn nên đưa điều này vào một bình luận, không phải một câu trả lời.
Dima

5

Có một WikiBook tốt trên MATLAB với danh sách các điểm khác biệt giữa MATLAB và Octave .

Theo kinh nghiệm của tôi, MATLAB cốt lõi được chuyển tốt sang Octave, nhưng các hộp công cụ có mức độ tương thích khác nhau, vì vậy quyết định của bạn phụ thuộc vào chính xác những gì bạn đang cố gắng viết mã.

Một số thứ mà Octave thiếu, AFAIK, là tích hợp chặt chẽ với mã .NET và trình tạo gui, guide(mặc dù có nhiều công cụ xây dựng GUI khác mà Octave có thể sử dụng).

Ngoài ra, như những người khác đã chỉ ra, phần lớn những gì bạn phải trả cho MATLAB là giao diện mượt mà và các công cụ gỡ lỗi / cấu hình. Các lập trình viên có kinh nghiệm có thể quản lý với các lựa chọn thay thế, nhưng người mới có thể gặp khó khăn.


3

Lưu ý rằng Octave hỗ trợ các cấu trúc ngôn ngữ không có trong Matlab (ví dụ: toán tử tăng tự động, câu lệnh do-Until, v.v.). Điều này đôi khi gây khó chịu cho mã cổng được phát triển (bởi một người không quen thuộc với các hạn chế của Matlab) trên Octave sang môi trường Matlab.

Có một số hạn chế / khác biệt khác tại Câu hỏi thường gặp về Octave .


2

Bạn chắc chắn nên thích Matlab hơn Octave nếu bạn có đủ khả năng.

Tôi chưa có nhiều kinh nghiệm với Octave, nhưng tôi sẽ gặp sự cố nếu mã của bạn đang sử dụng hộp công cụ Matlab, các ô lạ mắt hoặc Matlab gui.

Tôi mong đợi nó giống như OpenOffice so với MS Office. Chủ yếu là tương thích, nhưng chỉ khác nhau đủ để khiến bạn đau đầu.


0

Tôi đã chuyển thành công một số ứng dụng lập trình hồi quy tuyến tính và bậc hai sang Octave.

Hồi quy tuyến tính (toán tử dấu gạch chéo ngược) hoạt động mà không cần bất kỳ điều chỉnh nào. Trong trường hợp lập trình bậc hai, tôi phải chuyển từ fmincon () sang sqp () , cho kết quả tương tự.

Tuy nhiên, các hộp công cụ và GUI trong Octave thực sự là chưa hoàn thiện (tôi đã dành quá nhiều thời gian cho những thứ cơ bản), mặc dù nó đã nhanh chóng đạt được tiến bộ trong hai năm qua.

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.