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?
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?
Câu trả lời:
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ước và mộ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.
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ữ).
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ư
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.
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.
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ở Octave và Scilab .
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.
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ế.
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).
Chúng tôi không thể bởi vì nó được khách hàng mong đợi / yêu cầu.
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à 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.
R
là một ngôn ngữ lập trình.
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, xlim
v.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.