MATLAB có thể làm gì mà R không thể làm được? [đóng cửa]


137

Tôi thường nghe mọi người phàn nàn rằng giấy phép MATLAB đắt tiền như thế nào . Sau đó, tôi tự hỏi tại sao họ không chỉ cần sử dụng Octave hoặc R . Nhưng cái sau có đúng không? Bạn có thể sử dụng R để thay thế MATLAB không?


13
Nhân tiện, có một sự thay thế nguồn mở khác: Octave hầu hết tương thích với Matlab
sellibitze

14
Về mặt kỹ thuật, bất cứ điều gì có thể được thực hiện bằng một ngôn ngữ đều có thể được thực hiện bằng bất kỳ ngôn ngữ nào (theo quan điểm "những gì nó có thể tính toán"). Đó chỉ là vấn đề dễ sử dụng và dễ học
BlueRaja - Danny Pflughoeft

20
+1: Matlab có thể ăn hết ngân sách phần mềm của tôi. R đã không quản lý để làm điều này, chưa.
Lặp lại

3
Để sửa một số câu lệnh khác: không đúng khi người ta có thể sử dụng lại tất cả mã Matlab trong Octave hoặc FreeMat. Có một số lớp chức năng hoàn toàn không được thực hiện trong các phiên bản khác. Tôi có các khối mã lớn mà tôi thấy tốt hơn khi triển khai một lần nữa trong các môi trường có chức năng gần tương tự cho chỉ các lớp chức năng này. Về chức năng mà Matlab có mà Octave không có, tôi đã tìm thấy các đại diện thay thế trong R, Python và ở một mức độ nào đó, các thư viện Java và C. Tái hiện lại khó hơn mã cơ bản. Hãy chú ý đến các thư viện ...
Iterator

5
Việc kết thúc câu hỏi này là không chính đáng. Câu hỏi này không phải là về bỏ phiếu, mà là về chính xác những gì bạn có thể làm trong Matlab nhưng không phải ở R. Những điều như vậy có thể dễ dàng được liệt kê và hỗ trợ bởi các tài liệu tham khảo.
Frank

Câu trả lời:


128

Bạn có thể sử dụng R để thay thế MATLAB không?

Đúng.

Tôi đã sử dụng MATLAB trong nhiều năm nhưng chủ yếu chuyển sang R trong 3 năm qua. Tại thời điểm này, họ có nhiều điểm chung hơn không. Nó một phần phụ thuộc vào lĩnh vực của bạn và trường hợp sử dụng. Và như Spencer Graves đã nói trước đây , nó cũng phụ thuộc vào "nhà thờ nào bạn xảy ra thường xuyên". Sẽ tốt nhất nếu bạn xem bộ công cụ MATLAB so với CRAN cho một nhiệm vụ cụ thể trước khi bạn quyết định.

Một câu hỏi tương tự được hỏi trên R-Help vài năm trướcmột lần nữa gần đây . David Hiebeler (tại Đại học Maine) duy trì so sánh R / MATLAB rộng rãi , và là tài liệu tham khảo tốt nhất về chủ đề này. Bạn cũng có thể xem lại so sánh các chức năng cơ bản này .

Đây là một số trong những điều mà tôi đã quan sát thấy trong quá khứ, không ai trong số đó nên là người phá vỡ thỏa thuận.

  • Nói chung, MATLAB có môi trường lập trình tốt hơn (ví dụ: tài liệu tốt hơn, trình gỡ lỗi tốt hơn, trình duyệt đối tượng tốt hơn) và "dễ sử dụng" hơn (bạn có thể sử dụng MATLAB mà không cần thực hiện bất kỳ chương trình nào nếu muốn). Simulink cho phép bạn lập trình trực quan bằng cách kết nối các khối trong biểu đồ. REvolution R đang giải quyết một số khác biệt này bằng cách cung cấp một IDE tốt hơn với khả năng sửa lỗi được cải thiện, nhưng nó vẫn còn chậm một bước.
  • MATLAB nhanh hơn một chút với cấu hình bình thường ( xem ví dụ về điểm chuẩn này ), mặc dù có những điều có thể được thực hiện để cải thiện hiệu suất R nếu điều đó trở thành vấn đề.
  • Vì nó mang tính thương mại, nên cũng có nhiều "sản phẩm" hơn (theo nghĩa là các tiện ích bổ sung tích hợp) và hỗ trợ (nhưng bạn phải trả tiền cho nó). Xem danh sách sản phẩm . Chẳng hạn, nó có những thứ như trình biên dịch MATLAB tạo ra các chương trình MATLAB thực thi có thể được triển khai.
  • Cho đến nay, liên quan đến các gói / bộ công cụ, MATLAB hỗ trợ nhiều hơn cho các ngành khoa học vật lý trong khi R mạnh hơn về thống kê, điều đó không có nghĩa là người khác không thể thực hiện các nhiệm vụ này. Và cả hai có thể dễ dàng được mở rộng.

Vì vậy, nếu tính dễ sử dụng không phải là mối quan tâm chính (và không có lý do kinh doanh nào khác để tránh sử dụng một công cụ nguồn mở), thì tôi nghĩ rằng có một trường hợp thực sự được tạo ra để sử dụng R. Nó có một cộng đồng mạnh mẽ xung quanh nó (danh sách gửi thư R rất tuyệt vời), đang phát triển nhanh chóng (xem CRAN) và nó miễn phí (đó không phải là một vấn đề nhỏ!).

Chỉnh sửa: Tôi chỉ cần thêm một điểm nữa vào đây: cuốn sách "Phân tích dữ liệu chức năng với R và MATLAB" bao gồm một chương về "So sánh thiết yếu của ngôn ngữ Matlab và R". Điều này bao gồm một số khác biệt cú pháp quan trọng (chẳng hạn như việc giải thích dấu chấm hoặc ý nghĩa của dấu ngoặc vuông []). Cuốn sách này rất đáng đọc cho bất cứ ai quan tâm đến lập trình chức năng (bằng một trong hai ngôn ngữ).


5
Có một tài liệu tham khảo matlab / R tuyệt vời cho thấy cách thực hiện các nhiệm vụ tương đương trong mỗi ở đây: math.umaine.edu/~hiebeler/comp/matlabR.html
Suppressingfire

4
"[MATLAB] cũng có thể có nhiều sản phẩm và hỗ trợ hơn". Tôi không đồng ý với điều này. CRAN và Bioconductor (cho R) toàn diện hơn nhiều so với MATLAB + các hộp công cụ + Trao đổi tệp. Ngoài ra, theo danh sách của tôi, danh sách gửi thư R-Help thường hiệu quả như hỗ trợ có trả tiền. Tôi đồng ý rằng trình biên dịch MATLAB là một tính năng tuyệt vời không được sao chép trong R.
Richie Cotton

2
Rất nhiều lần các hàm R được ghi lại tốt hơn các hàm trong Matlab. Tôi thấy rằng chất lượng của tài liệu Matlab thay đổi rất nhiều từ chức năng đến chức năng và giữa các hộp công cụ (thương mại). Tôi đồng ý rằng Matlab IDE có phần thân thiện với người mới bắt đầu hơn, nhưng nó không tốt hơn ví dụ ESS cho R nếu bạn sử dụng nó trên cơ sở hàng ngày.
Matti Pastell

10
RStudio là một R IDE mới đẹp
Jason Axelson

1
Quá tệ câu hỏi này đã bị đóng cửa. Đây là một trong những cuộc thảo luận kỹ thuật tốt nhất tôi từng thấy trên StackOverflow.
kd4ttc 17/03/13

32

R là một môi trường để phân tích dữ liệu thống kê và đồ họa. Nguồn gốc của MATLAB là tính toán số. Việc triển khai ngôn ngữ cơ bản có nhiều tính năng chung nếu bạn sử dụng chúng để thao tác dữ liệu (ví dụ: hoạt động ma trận / vectơ).

R có chức năng thống kê khó tìm thấy ở nơi khác (> 2000 Gói trên CRAN ) và rất nhiều nhà thống kê sử dụng nó. Mặt khác, MATLAB có rất nhiều hộp công cụ (đắt tiền) cho các ứng dụng kỹ thuật như

  • xử lý hình ảnh / thu nhận hình ảnh,
  • thiết kế bộ lọc,
  • logic mờ / điều khiển mờ,
  • phương trình vi phân từng phần,
  • Vân vân.

R có một kho lưu trữ gói lớn gọi là CRAN cung cấp nhiều tính năng bổ sung (mặc dù tôi đồng ý với quan điểm chung của bạn). Ví dụ: trình giải PDE: cran.r-project.org/web/packages/deSolve/index.html
Suppressingfire

7
MATLAB cũng có một cái gì đó tương tự với CRAN: Trao đổi tệp khá lớn ( mathworks.com/matlabcentral/fileexchange ) với hơn 10.000 chức năng và hộp công cụ do người dùng gửi miễn phí.
gnovice

2
Ngoài ra còn có một cơ sở mã miễn phí, đáng kể cho MATLAB bên ngoài Trao đổi tệp của MATLAB Central.
Dự đoán

26

Tôi đã sử dụng cả R và MATLAB để giải quyết các vấn đề và xây dựng các mô hình liên quan đến Kỹ thuật môi trường và có rất nhiều sự chồng chéo giữa hai hệ thống. Theo tôi, ưu điểm của MATLAB nằm ở các ứng dụng chuyên biệt cho miền. Một số ví dụ:

  • Các chức năng như hợp lý hóa giúp hỗ trợ điều tra động lực học chất lỏng.

  • Các hộp công cụ như bộ công cụ xử lý ảnh. Tôi chưa tìm thấy gói R cung cấp triển khai các công cụ tương đương như thuật toán đầu nguồn.

Theo tôi MATLAB cung cấp khả năng đồ họa tương tác tốt hơn nhiều. Tuy nhiên, tôi nghĩ R tạo ra đồ họa chất lượng in tĩnh tốt hơn, tùy thuộc vào ứng dụng. Hộp công cụ toán học tượng trưng của MATLAB cũng được tích hợp tốt hơn và có khả năng cao hơn các công cụ tương đương R như Ryacas hoặc rSymPy. Sự tồn tại của trình biên dịch MATLAB cũng cho phép các hệ thống dựa trên mã MATLAB được triển khai độc lập với môi trường MATLAB - mặc dù tính khả dụng của nó sẽ phụ thuộc vào số tiền bạn phải bỏ ra.

Một điều khác tôi cần lưu ý là trình gỡ lỗi MATLAB là một trong những trình duyệt tốt nhất mà tôi đã làm việc cùng.

Ưu điểm chính mà tôi thấy với R là tính mở của hệ thống và sự dễ dàng có thể mở rộng của nó. Điều này đã dẫn đến sự đa dạng đáng kinh ngạc của các gói trên CRAN. Tôi biết Mathworks cũng duy trì một kho chứa các hộp công cụ do người dùng đóng góp và tôi không thể so sánh công bằng vì tôi chưa sử dụng nó nhiều.

Độ mở của R cũng mở rộng để liên kết trong mã được biên dịch. Cách đây không lâu, tôi có một mô hình được viết bằng Fortran và tôi đã cố gắng quyết định giữa việc sử dụng R hoặc MATLAB làm mặt trước để giúp chuẩn bị kết quả đầu vào và xử lý. Tôi đã dành một giờ để đọc về giao diện MEX để biên dịch mã. Khi tôi thấy rằng tôi sẽ phải viết và duy trì một thói quen Fortran riêng biệt đã thực hiện một số thao tác con trỏ phức tạp để quản lý giao diện, tôi tạm gác MATLAB.

Giao diện R bao gồm gọi .ortran ([tên chương trình con], [danh sách đối số]) và đơn giản là nhanh hơn và sạch hơn.


11
Tôi cũng nên đề cập rằng R nhận được một điểm cộng lớn trong cuốn sách của tôi cho hệ thống Sweave để cho phép nghiên cứu tái sản xuất. Cho phép bất cứ ai chạy lại và phân tích các tính toán đằng sau một bài báo hoặc báo cáo bằng cách sử dụng một công cụ có sẵn miễn phí theo quan điểm của tôi.
Sharpie

22

Một lợi thế lớn của MATLAB so với R là chất lượng của tài liệu MATLAB. R, là nguồn mở, chịu đựng về mặt này, một tính năng phổ biến cho nhiều dự án nguồn mở.

R, tuy nhiên, là một môi trường và ngôn ngữ rất hữu ích. Nó được sử dụng rộng rãi trong cộng đồng tin sinh học và có nhiều gói hữu ích trong lĩnh vực này.

Một thay thế cho R là Octave ( http://www.gnu.org/software/octave/ ) rất giống với MATLAB, nó có thể chạy các tập lệnh MATLAB.


2
Tất cả các gói R gửi được kiểm tra tài liệu và ví dụ.
Fernando

21

Theo kinh nghiệm của tôi, việc chuyển từ MATLAB sang Python là một quá trình chuyển đổi dễ dàng hơn - Python với numpy / scipy gần với MATLAB hơn về kiểu dáng và tính năng so với R. Ngoài ra còn có các bản sao MATLAB trực tiếp mã nguồn mở OctaveScilab .

Chắc chắn MATLAB có thể làm được điều đó R không thể - trong khu vực của tôi, MATLAB được sử dụng rất nhiều cho việc cung cấp dữ liệu thời gian thực - hầu hết các công ty phần cứng đều có giao diện MATLAB. Trong khi điều này có thể khả thi với RI hãy tưởng tượng nó sẽ liên quan nhiều hơn. Ngoài ra Simulink cung cấp toàn bộ khu vực chức năng mà tôi nghĩ là thiếu từ R. Tôi chắc chắn có nhiều hơn nhưng tôi không quá quen thuộc với R.


11

Câu trả lời ngắn gọn: không, tất nhiên là không. Mặc dù bất kỳ tập hợp các gói phần mềm toán học nào cũng sẽ có sự chồng chéo của chúng, chúng sẽ luôn có sự thiên vị đối với các miền có vấn đề nhất định. Những thành kiến ​​này cho thấy bạn có muốn sử dụng một trong các gói này hay không.

Một ví dụ về những gì MATLAB có thể làm mà R không thể là giao diện với phần cứng thời gian thực để xử lý / thu nhận và điều khiển tín hiệu. Một Simulink mô hình trong MATLAB có thể được cấu hình cả hai để chạy trong mô phỏng trên máy tính của bạn trước khi biên dịch mã để thực hiện trên một hệ thống thực lấy tư liệu đo như là đầu vào và tính toán đầu ra phù hợp (những gì là trước một mô phỏng của một hệ thống điều khiển được bây giờ là một hoạt động đầy đủ một). Với bảng phần cứng phù hợp trong máy của bạn, bạn có thể chạy các hệ thống điều khiển thời gian thực thông qua PC.

Ngược lại, R dường như được đặt chắc chắn trong vai trò thống kê, nơi tôi chắc chắn rằng nó thực hiện tốt những gì MATLAB có thể làm. Tương tự, Mathematica tốt hơn MATLAB ở các môn toán tượng trưng; Python tốt hơn MATLAB ở lập trình chung; gnuplot tốt hơn tất cả chúng trong việc tạo ra các biểu đồ (er, tôi giả sử); và như thế.


11
R thực sự được biết là rất tốt để tạo đồ thị. Họ trông cũng rất tốt Trên thực tế, lý do đầu tiên để tôi nhìn vào R là tôi ghen tị với một số biểu đồ đẹp mà các đồng nghiệp của tôi đã tạo ra, sử dụng R. Vì vậy, tôi đã chuyển từ gnuplot và không bao giờ nhìn lại.
Frank

11

Tôi đồng ý với nhiều câu trả lời ở trên. Vì câu trả lời là dành riêng cho sự khác biệt của các khả năng MATLAB và R, tôi sẽ đề cập đến một câu hỏi rất quan trọng: MATLAB bao gồm một JVM và có khả năng tương tác hoàn hảo và mạnh mẽ với Java. Tất cả các thư viện vũ trụ rộng lớn của Java đều có thể truy cập được đối với người dùng MATLAB. IDE MATLAB gần như có thể được sử dụng như một Eclipse của một người nghèo. So sánh, rJava rất non nớt, bất chấp nỗ lực rất quý giá của người tạo ra nó (Roman Francois).


9

Chúng tôi không thể bởi vì nó được khách hàng mong đợi / yêu cầu.


3
Đây là một câu trả lời hoàn toàn hợp lệ. Điều quan trọng là phải nhận ra rằng có nhiều ngành công nghiệp đơn giản sẽ không chấp nhận giải pháp nguồn mở. Có những yêu cầu tuân thủ đáng ngờ mà lấy R của tấm.
Brandon Bertelsen

1
@BrandonBertelsen: cụ thể là gì?
smci

3
@smci tuyên bố đó không còn đúng như năm 2010. Sử dụng R đã tăng sinh.
Brandon Bertelsen

Ok, nhưng bạn có thể cho chúng tôi biết vào năm 2010 những yêu cầu tuân thủ nào đã đưa R ra khỏi tấm (và đó vẫn là một vấn đề)?
smci

1
Khách hàng của chúng tôi thường sử dụng MATLAB và chúng tôi thường được yêu cầu trao đổi mã và mô hình với họ. Bạn thường thấy rằng các ngành duy nhất sử dụng R chủ yếu liên quan đến các tập dữ liệu và thống kê.
Nzbuu

5

Với gói sqldf, R không chỉ có khả năng thống kê mà còn khai thác dữ liệu nghiêm túc - giả sử có đủ RAM trên máy của bạn.

Và với gói RServe R trở thành một máy chủ TCP / IP thông thường; vì vậy bạn có thể gọi R ra khỏi java (hoặc bất kỳ ngôn ngữ nào khác nếu bạn có api). Ngoài ra còn có một gói trong R để gọi java ra hoặc R.


Đó là sự thật, nhưng câu hỏi là "MATLAB có thể làm gì mà R không thể làm được?" không phải "R có thể làm gì mà MATLAB không thể làm được?".
Marek

4

Là người dùng của cả MATLAB và R, tôi nghĩ chúng là những ứng dụng rất khác nhau. Bản thân tôi có một nền tảng về khoa học máy tính, v.v. và tôi không thể không nghĩ rằng R là của các nhà thống kê cho các nhà thống kê trong khi MATLAB là bởi các lập trình viên cho các lập trình viên.

R giúp dễ dàng hình dung và tính toán tất cả các loại công cụ thống kê nhưng tôi sẽ không sử dụng nó để thực hiện bất kỳ xử lý tín hiệu nào liên quan nếu nó tùy thuộc vào tôi.

Để tổng hợp, nếu bạn muốn làm thống kê, hãy sử dụng R. Nếu bạn muốn lập trình, hãy sử dụng MATLAB hoặc một số ngôn ngữ lập trình.


4
Hãy đến một, Rlà một ngôn ngữ lập trình.
Frank

6
"Matlab là bởi các lập trình viên cho các lập trình viên". MATLAB ban đầu được viết riêng để làm đại số tuyến tính; nó không phải là một ngôn ngữ lập trình mục đích chung. Nhiều tính năng ngôn ngữ mục đích chung đã được giải quyết sau đó. (Nó chỉ có một hệ thống hướng đối tượng khả thi trong một năm.)
Richie Cotton

9
"Matlab là do lập trình viên dành cho lập trình viên": Bạn có nghiêm túc không? Điều duy nhất thực sự làm tôi khó chịu với MATLAB là bất cứ ai phát minh ra ngôn ngữ này đều không phải là lập trình viên, do sự lúng túng cực độ của ngôn ngữ trong một số tình huống.
Hannes Ovrén

13
R được tạo ra bởi các nhà thống kê, Matlab được tạo ra bởi các kỹ sư. Cả hai đều có khả năng lập trình ngôn ngữ đầy đủ.
Sharpie

3
@smci Lần cuối cùng tôi trao đổi mã Matlab sản xuất cho mã R là tại Dịch vụ thời tiết quốc gia năm 2008 và hệ thống đã chạy không có lỗi kể từ đó. Việc xử lý nội bộ các bộ dữ liệu nhiều gigabyte bằng thuật toán đệ quy hoàn toàn không phải là một đại diện nhiệm vụ của máy tính khoa học và do đó là một sự lựa chọn chuẩn mực để đưa ra tuyên bố chung về sự phù hợp của ngôn ngữ lập trình.
Sharpie

2

Hỗ trợ cho đồ họa tương tác tốt hơn nhiều trong matlab so với R. Tôi ghét matlab như một ngôn ngữ, nhưng tôi ghen tị khi thấy người dùng của nó có thể khám phá dữ liệu bằng thao tác chuột, trong khi tôi bận lặp lại các lệnh với các giá trị mới, xlimv.v. Matlab cũng xử lý các ô đa bảng tốt hơn nhiều so với bất kỳ phương thức R nào cho tác vụ. Nói chung, đồ họa R có một cảm giác những năm 1960. Nó tốt cho xuất bản, nhưng không phải là giải pháp tốt nhất để khám phá dữ liệu tương tác.


Là người sử dụng nhiều công cụ vẽ biểu đồ tương tác của cả hai hệ thống, tôi sẽ đồng ý ở các giới hạn (ví dụ như tôi đẩy mạnh cả hai), nhưng bạn có thể bỏ lỡ một số công cụ vẽ đồ thị tương tác rất hữu ích trong R. Hãy xem các gói sau : iplots, Acinonyx, thao tác của Rstudio và hơn thế nữa. Để giải trí, hãy xem ví dụ này .
Lặp lại

"Đồ họa R có cảm giác của thập niên 1960" - điều đó có thể đúng trong nhiều năm trước. Ngày nay, với ggplot2 đang nhanh chóng trở nên phổ biến, các biểu đồ R có giao diện hiện đại và đẹp mắt. Xem ví dụ: r-bloggers.com/?s=ggplot
arielf 29/03/13
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.