Sự khác biệt giữa Octave và MATLAB? [đóng cửa]


271

Tôi là một lập trình viên biết Python, Ruby và một số C đang cố gắng quyết định nên học GNU Octave hay Matlab. Tôi biết rằng chúng có rất nhiều điểm chung , nhưng tôi không rõ cú pháp tương tự hoặc thậm chí các cấu trúc dữ liệu là như thế nào. Mọi người đều nói rằng họ "giống nhau", nhưng không ai nói họ thực sự giống nhau như thế nào. Liên kết trên cho thấy một số ví dụ trong đó chúng giống nhau về mặt cú pháp hoặc giống hệt nhau, điều này có đúng với toàn bộ ngôn ngữ không?

Tôi đang cố gắng học ngôn ngữ nói chung để làm máy tính khoa học hơn, có thể sử dụng một số thư viện phân tích hình ảnh. Tôi biết có rất nhiều ngôn ngữ khác tôi có thể lập trình, nhưng các cố vấn của tôi nói rằng việc biết MATLAB hoặc Octave là rất quan trọng trong các ngành khoa học.

Ngoài ra, Matlab có đáng giá? Tôi không có nhiều tiền, nhưng nếu có sự khác biệt quan trọng trong thư viện hoặc ở nơi khác, tôi chắc chắn mình có thể tìm thấy tiền.


8
Vì bạn là sinh viên, nên kiểm tra xem trường của bạn có cung cấp matlab cho sinh viên miễn phí / giá rẻ hay không; cả trường đại học và lớp tốt nghiệp của tôi đều làm điều đó, điều này giúp cho việc quyết định đi với matlab có phần dễ dàng hơn.
Dougal

22
Có, nhưng khi anh rời trường đại học và đến một trung tâm nghiên cứu nào đó, anh sẽ phải mua nó và sau đó sẽ chỉ biết Matlab chứ không phải thay thế. Vì vậy, hãy suy nghĩ về lâu dài, nếu bạn muốn tạo ra một carrer trong khoa học mà dường như anh ấy muốn, bạn không nên bỏ qua điều này. Chưa kể rằng các giấy phép như vậy thường không thể được sử dụng cho các cụm.
carandraug

2
Trong khi bạn là sinh viên, bạn sẽ có thể nhận được giấy phép matlab với giá khoảng 100 đô la (USD). Được cấp nếu bạn muốn một số hộp công cụ khác, chúng sẽ có thêm 29 USD cho mỗi hộp công cụ. Vì vậy, không biết hộp công cụ nào bạn có thể muốn / cần, thật khó để biện minh cho chi phí.
Ben A.

22
+1 Tôi mới bắt đầu học Octave ngày hôm nay vì tôi hiện đang học Machine Learning và giáo viên khuyên nên học Octave (vì nó miễn phí, vì METLAB đắt tiền và vì học sinh sẽ làm việc hiệu quả hơn khi sử dụng thuật toán máy đầu tiên sử dụng Octave hoặc METLAB trước, sau đó khi nó hoạt động, sau đó chuyển sang Java hoặc C ++)
Anthony

7
Tôi khuyên bạn nên sử dụng python + opencv
gukoff

Câu trả lời:


235

Thay vì cung cấp cho bạn một danh sách đầy đủ về sự khác biệt, tôi sẽ cung cấp cho bạn quan điểm của tôi về vấn đề này.

Nếu bạn đọc kỹ trang wiki bạn cung cấp, bạn sẽ thường thấy các câu như "Octave hỗ trợ cả hai, trong khi MATLAB yêu cầu đầu tiên", v.v. Điều này cho thấy các nhà phát triển của Octave cố gắng tạo cú pháp Octave "vượt trội" so với MATLAB.

Thái độ này khiến Octave mất hoàn toàn mục đích. Ý tưởng đằng sau Octave là (hoặc đã trở thành , tôi nên nói, xem các bình luận bên dưới) để có một sự thay thế nguồn mở để chạy mã m. Nếu nó cố gắng trở nên "tốt hơn", thì nó sẽ cố gắng trở nên khác biệt , điều này không phù hợp với lý do hầu hết mọi người sử dụng nó. Theo kinh nghiệm của tôi, công cụ chạy được phát triển trong MATLAB không bao giờ hoạt động một lần, ngoại trừ công cụ thực sự đơn giản, thực sự ngắn - Đối với bất kỳ chức năng khá lớn nào, tôi luôn phải dịch rất nhiều nội dung trước khi nó hoạt động trong Octave, nếu không viết lại từ đầu. Làm thế nào điều này là tốt hơn , tôi thực sự không thấy ...

Ngoài ra, nếu bạn học Octave, có rất nhiều cú pháp được phép trong Octave không được phép trong MATLAB. Ý nghĩa - mã được viết bằng Octave thường không hoạt động trong MATLAB mà không có nhiều chuyển đổi. Nó cũng không tương thích theo cách khác!

Tôi có thể tiếp tục: MathWorks có nhiều hộp công cụ cho MATLAB, có Simulink và các sản phẩm liên quan của nó mà thực sự không có tương đương trong Octave (vâng, bạn phải trả tiền cho tất cả điều đó. Nhưng thường thì chủ nhân / trường học của bạn vẫn làm điều đó và tốt, ít nhất là nó tồn tại ), đã được chứng minh tuân thủ một số tiêu chuẩn ngành, công cụ kiểm tra, công cụ xác nhận, hệ thống quản lý yêu cầu, tạo báo cáo, cộng đồng và cơ sở người dùng lớn hơn nhiều, v.v. vv MATLAB chỉ là một phần nhỏ của một cái gì đó lớn hơn nhiều. Octave là ... chỉ là Octave.

Vì vậy, lời khuyên của tôi:

  • Tìm hiểu xem trường học của bạn sẽ trả tiền cho MATLAB. Thường thì họ sẽ làm.
  • Nếu họ không và nếu bạn có thể kiếm được tiền, hãy mua MATLAB và học cách sử dụng nó đúng cách. Về lâu dài, đó là quyết định tốt hơn.
  • Nếu bạn thực sự không thể nhận được tiền - hãy sử dụng Octave, nhưng học cú pháp của MATLAB và tránh xa cú pháp chỉ của Octave. (xem chú thích)

Tại sao điểm cuối cùng này? Bởi vì trong các ngành khoa học, thường có các cơ sở mã lớn được viết hoàn toàn bằng MATLAB. Có các giáo sư, kỹ sư, sinh viên, lập trình viên chuyên nghiệp, rất nhiều người biết tất cả các chi tiết phức tạp của MATLAB, và không nhiều về Octave.

Nếu bạn nhận được một công việc mới và mọi người trong văn phòng mới của bạn đều nói tiếng Tây Ban Nha, thì thật khó để yêu cầu mọi người rằng họ bắt đầu nói tiếng Anh từ đó, đơn giản vì bạn không nói / thích tiếng Tây Ban Nha. Tương tự với MATLAB và Octave.

NB - nếu tất cả downvoters chỉ có thể để lại nhận xét với lập luận và lý do họ không đồng ý với tôi, mà muốn được :) lớn

Lưu ý: Octave có thể được chạy trong "chế độ truyền thống" (bằng cách bao gồm cờ --traditable khi bắt đầu Octave) khiến nó bị lỗi khi sử dụng cú pháp chỉ Octave nhất định.


25
Về việc thiếu JIT, nó đã được triển khai trên phiên bản phát triển của Octave. Tôi không biết khi nào nó sẽ được phát hành nhưng tôi đã xây dựng nó và sự khác biệt là rất lớn đối với mã bản đồ. Và để tránh xa cú pháp chỉ của Octave, có tùy chọn - điều kiện của Octave. Tôi không nói rằng mã Matlab luôn chạy trong Octave nhưng điều này sẽ tốt hơn rất nhiều với mỗi bản phát hành và tính tương thích là một trong những ưu tiên của chúng (chưa kể rằng các phiên bản Matlab khác nhau có đủ sự không tương thích giữa chúng).
carandraug

14
Và những gì bạn gọi là dính vào một cú pháp ưu việt ... nếu bạn có quyền tự do thay đổi Matlab, thêm cú pháp bổ sung hoặc các chức năng khác nhau, phải không? Đây là những tính năng mà người dùng triển khai và chúng không phá vỡ tính tương thích. Thường xuyên hơn không, những điều mới bị từ chối với lý do đó. Ý tưởng là ngôn ngữ Matlab là một tập hợp con của ngôn ngữ Octave. Nếu bạn nghĩ rằng ý tưởng này là tuyệt vời, thì bạn nên tham gia vì đây là một dự án cộng đồng và có các tính năng mà cộng đồng bận tâm để phát triển.
carandraug

19
@RodyOldenhuis nó không phải là một bản sao. Sự phát triển của Octave đã không bắt đầu theo cách đó, nó ngày càng bị đẩy theo hướng đó bởi những người dùng tiếp tục gửi các bản vá cho nó scazedirect.com/science/article/pii/S0959152412000911
carandraug

9
Nhà sản xuất của bất kỳ công cụ lập trình nào EVER đã chịu trách nhiệm cho một lỗi?
Martin Beckett

6
@carandraug: ah đến địa ngục với nó. Sự đúng đắn quan trọng hơn tất cả những điều đó :)
Rody Oldenhuis

78

Một liên kết đầy đủ hơn đến danh sách các khác biệt có trong Câu hỏi thường gặp của Octave . Về lý thuyết, tất cả các mã chạy trong Matlab nên chạy trong các nhà phát triển Octave và Octave coi sự không tương thích với Matlab là lỗi. Vì vậy, câu trả lời cho câu hỏi đầu tiên của bạn là có trong lý thuyết. Tất nhiên, tất cả các phần mềm đều có lỗi, cả Octave hay Matlab (vâng, Matlab cũng vậy) đều an toàn với chúng. Bạn có thể báo cáo chúng và ai đó sẽ cố gắng sửa chúng

Octave cũng có các tính năng bổ sung , hầu hết trong số chúng là cú pháp bổ sung mà theo tôi làm cho mã dễ đọc hơn và có ý nghĩa hơn, đặc biệt nếu bạn đã quen với các ngôn ngữ lập trình khác.

Nhưng có nhiều thứ cho Octave hơn là chi phí tiền tệ. Octave cũng miễn phí theo nghĩa tự do, đó là sự tự do, nhưng tôi không nghĩ đây là nơi để nói về tự do phần mềm.

Tôi chỉ xử lý hình ảnh trong Octave và thấy rằng gói hình ảnh phù hợp với nhu cầu của tôi. Tôi không biết, tuy nhiên, cái gì sẽ là của bạn. Vì vậy, câu trả lời của tôi là nếu nó đáng giá thì không, nhưng chắc chắn những người khác sẽ không đồng ý.


23

MATLAB, trước hết là một sản phẩm thương mại. Do đó, mọi thứ trong MATLAB đều hoạt động tốt. Tất cả các chức năng cốt lõi đều ổn định và nếu bạn đang làm việc trong một dự án đặc biệt thì MATLAB có thể có một tiện ích bổ sung, họ có thể bán cho bạn thêm rất nhiều tệp .m dành riêng cho tên miền. Nó không rẻ, nhưng nó hoạt động và nó sẽ hoàn thành công việc mà không có khiếu nại.

Octave luôn hiển thị nguồn gốc, thông tin muốn có nguồn gốc miễn phí. Nó miễn phí và nó sẽ nhắc nhở bạn rằng nó miễn phí ở mọi cơ hội. Nó được phát triển bởi những tình nguyện viên ghét Windows với niềm đam mê. Do đó Octave chạy trên Windows một cách miễn cưỡng. Thật đáng ngạc nhiên khi có nhiều tính năng MATLAB tồn tại như chúng.

Nhưng đây là chà. Bất cứ khi nào bạn cố gắng làm một cái gì đó phức tạp hơn tầm thường, Octave đột nhiên phá vỡ những cách tinh tế và khó hiểu. Rất tiếc - trình điều khiển thiết bị đầu cuối đã bị tràn ở đâu đó sâu trong lớp OpenGL. Bạn không thể in. Rất tiếc - các ô hình làm những điều kỳ lạ với phông chữ của chúng. Chúc may mắn tìm ra lý do tại sao. Rất tiếc - có một số phụ thuộc ẩn giữa Octave và một số phần mềm miễn phí tối nghĩa khác, vì vậy nó sẽ không được biên dịch. Chúc may mắn tìm ra nó là gì.

Và phản ứng Octave là hey! Đó là phần mềm miễn phí! Bạn có tất cả các mã nguồn, bạn có thể tự sửa tất cả các lỗi đó! Có lẽ nếu tôi có thời gian và tài nguyên vô hạn trong tay, tôi có thể dành toàn bộ thời gian để sửa lỗi trong phần mềm miễn phí, nhưng cá nhân tôi thì không. Nếu tôi làm việc trong học viện, tôi có thể.

Vì vậy, cốt lõi, vấn đề nên chọn MATLAB hay Octave đi đến một câu hỏi. Thật thú vị, câu hỏi đó luôn giống nhau, khi lựa chọn giữa các biến thể phần mềm thương mại và miễn phí.

Và câu hỏi là:

Bạn có nhiều tiền hơn thời gian không?


2
Một câu hỏi khác là: những công ty mà bạn có thể sẽ sử dụng làm việc gì? Có lẽ Matlab vì những lý do tương tự.
dùng276648

14

Octave về cơ bản là một phiên bản mã nguồn mở của MATLAB. Nó đã được viết để được như vậy. MATLAB có GUI rất đẹp giúp sử dụng dễ dàng hơn một chút nhưng bản phát hành ổn định tiếp theo của OCTAVE cũng sẽ có GUI, mà tôi đã thử nghiệm trong bản phát hành không ổn định và trông rất tuyệt. Octave có nhiều lỗi hơn bởi vì nó được phát triển và duy trì bởi một nhóm tình nguyện viên, nơi sự phát triển của MATLAB được tài trợ bởi hàng triệu đô la theo ngành. Tôi vẫn còn là một sinh viên và đang sử dụng một phiên bản MATLAB dành cho sinh viên, nhưng tôi đang nghĩ đến việc chuyển sang Octave một khi phiên bản ổn định với GUI được phát hành.

MATLAB có lẽ mạnh hơn Octave rất nhiều và thuật toán chạy nhanh hơn, nhưng đối với hầu hết các ứng dụng, Octave là quá đủ và theo tôi, đây là một công cụ tuyệt vời hoàn toàn miễn phí, trong đó Octave hoàn toàn miễn phí.

Tôi sẽ nói sử dụng MATLAB trong khi bạn có thể sử dụng phiên bản học thuật, nhưng việc chuyển sang Octave phải liền mạch vì chúng sử dụng cùng một cú pháp chính xác.

Cuối cùng, có vấn đề về SIMULINK. Nếu bạn muốn thực hiện mô phỏng hoặc thiết kế hệ thống điều khiển (có thể có một triệu cách sử dụng khác) SIMULINK thật tuyệt vời và đi kèm với MATLAB. Tôi không nghĩ bất kỳ ai khác đến gần với điều này, mặc dù Scilab rõ ràng là một sự thay thế nguồn mở 'tốt', tôi đã không thử nó.

Sự thanh bình.


"... bởi vì nó được phát triển và duy trì bởi một nhóm tình nguyện viên, nơi sự phát triển của MATLAB được tài trợ bởi hàng triệu đô la theo ngành." Số tiền trong một dự án không phải là nguyên nhân cho chất lượng và không có lỗi. Họ có lẽ thậm chí không phải là một mối tương quan.
gagarine

"Họ sử dụng cùng một cú pháp" Không, họ không.
Cris Luengo

8

Tôi mới bắt đầu sử dụng Octave. Và tôi đã thấy mọi người sử dụng Matlab. Và một điểm khác biệt lớn như đã đề cập ở trên là Octave có giao diện dòng lệnh và Matlab có GUI. Theo tôi có một GUI rất tốt để gỡ lỗi. Trong Ocatve, bạn phải thực thi các lệnh để xem độ dài của ma trận là bao nhiêu, nhưng trong Matlab, nó hiển thị độc đáo mọi thứ bằng giao diện tốt. Nhưng Octave là miễn phí và tốt cho các nhiệm vụ cơ bản mà tôi làm. Nếu bạn chắc chắn rằng bạn sẽ chỉ làm những thứ cơ bản hoặc bạn không chắc chắn những gì bạn cần ngay bây giờ, thì hãy đến Octave. Bạn có thể trả tiền cho Matlab khi bạn thực sự cảm thấy cần thiết.


2
Octave có GUI hiện đang trong giai đoạn thử nghiệm. Sử dụng lệnh --force-gui khi thực hiện quãng tám.
ig343

6
... và bắt đầu từ Octave phiên bản 4, GUI là giao diện người dùng mặc định.
Ruslan

7

Điều làm cho Matlab trở nên phổ biến và đặc biệt là các hộp công cụ tuyệt vời của nó trong các ngành khác nhau. Vì mục tiêu chính của bạn là học Matlab, nên không có gì khác biệt nếu bạn làm việc với Octave hoặc Matlab!

Chỉ cần đi và mua Matlab mà không có bất kỳ hộp công cụ tuyệt vời nào (mà về cơ bản phụ thuộc vào chuyên ngành của bạn) không thực sự là một chi phí hợp lý!

Bạn chắc chắn có thể có một khởi đầu tốt với Octave và theo dõi hàng tấn hướng dẫn về Matlab trên internet.


4

Không có nhiều điều mà tôi muốn thêm vào câu trả lời của Rody Oldenhuis. Tôi thường theo chiến lược mà tất cả các chức năng mà tôi viết nên chạy trong Matlab.

Một số chức năng cụ thể tôi kiểm tra trên cả hai hệ thống, cho các trường hợp sử dụng sau:

a) quãng tám không cần máy chủ cấp phép - ví dụ: nếu tổ chức của bạn không hỗ trợ giấy phép địa phương. Tôi đã sử dụng nó một lần trong tình huống hệ thống tôi sử dụng tập lệnh không có kết nối với internet và sẽ chạy trong một thời gian rất dài (ở một góc trong phòng thí nghiệm) và được sử dụng bởi nhiều người dùng khác nhau. Lưu ý: đó không phải là về chi phí giấy phép, mà là về các vấn đề kỹ thuật liên quan.

b) Octave hỗ trợ các nền tảng khác, ví dụ, Rasberry Pi ( http://wiki.octave.org/Rasperry_Pi ) - có thể có ích.


3

Các hàm lồng nhau và các bao đóng hiện được hỗ trợ bởi nhiều ngôn ngữ, bao gồm MATLAB. JavaScript khuyến khích đóng cửa như một nguyên tắc thiết kế hạng nhất.

Đáng buồn thay, Octave không hỗ trợ các bao đóng (các hàm lồng nhau với phạm vi từ vựng).

Theo http://osdir.com/ml/octave-orms-tracker/2013-06/msg00210.html người ta thậm chí có thể có ấn tượng rằng các nhà phát triển không muốn hoặc không thể làm cho đúng.

Điều này sẽ phá vỡ rất nhiều mã, cả hai cách. Không có cách giải quyết.


Tôi không chắc điều này là chính xác nữa. Các hàm lồng nhau được triển khai trong Octave và tôi thấy chúng linh hoạt hơn Matlab: ví dụ, có thể khai báo các hàm (trừ lambdas) trong tập lệnh, điều này không thể thực hiện được với Matlab lần trước tôi đã thử.
MayeulC

@MayeulC Phần linh hoạt hơn thực sự cắt giảm cả hai cách.
Wolfgang Kuehn

0

Octave và matlab có nhiều điểm tương đồng. Nhưng Octave là một giao diện dòng lệnh. Bạn phải nhập từng lệnh trong dấu nhắc lệnh, trong khi MATLAB đi kèm với GUI tốt nhất. Tôi khuyên bạn trước tiên nên sử dụng phiên bản sinh viên MATLAB; sau khi học các bài học cơ bản, hãy sử dụng percaly octave. Bây giờ gnu octave đi kèm với gui, nhưng bây giờ nó là phiên bản phát triển. Có một số giao diện người dùng gui cho octave gnu, như guioctave, xoctave (không miễn phí), DomainMath IDE, v.v.


2
phiên bản phát triển của octave (3.7.5 trở thành) đi kèm với một gui bản địa, trông khá đẹp!
kjetil b halvorsen
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.