2009-11-08 73 views

Trả lời

17

This page nói,

Scripts so với hàm

Scripts là m-file chứa MATLAB báo cáo. MATLAB `` chức năng '' là một loại m-file khác. Sự khác biệt lớn nhất giữa các tập lệnh và các hàm là các hàm có các tham số và đầu ra. Tệp tập tin chỉ có thể hoạt động trên các biến số được mã hóa cứng vào tệp m của chúng. Như bạn có thể thấy, chức năng nhiều hơn nữa linh hoạt. Do đó, chúng càng có nhiều phù hợp cho các tác vụ mục đích chung sẽ được áp dụng cho các dữ liệu khác nhau .

Tập lệnh hữu ích cho các tác vụ không thay đổi. Họ cũng là một cách để ghi lại một chuỗi cụ thể của hành động, nói một lời gọi hàm với giá trị tham số đặc biệt, đó có thể là khó nhớ.

Có thêm sự khác biệt tinh tế giữa các tập lệnh và các chức năng . Tập lệnh có thể được coi là làm macro bàn phím: khi bạn nhập tên của tập lệnh, tất cả các lệnh có trong đó được thực hiện giống như khi bạn nhập các lệnh này vào cửa sổ lệnh. Do đó, tất cả các biến được tạo trong tập lệnh được thêm vào không gian làm việc cho phiên hiện tại. Hơn nữa, nếu bất kỳ biến nào trong tập lệnh tệp có cùng tên trong số không gian làm việc hiện tại của bạn, các giá trị của các biến đó trong không gian làm việc là thay đổi theo hành động trong tập lệnh. Điều này có thể được sử dụng để lợi thế của bạn. Nó cũng có thể gây ra các tác dụng phụ không mong muốn.

Ngược lại, biến chức năng là địa phương để các chức năng. (Ngoại lệ là có thể khai báo và sử dụng các biến toàn cầu, nhưng yêu cầu và hành động rõ ràng bởi người dùng .) Phạm vi địa phương của hàm biến mang lại cho bạn bảo mật lớn hơn và linh hoạt. Cách duy nhất (ngoài khai báo rõ ràng các biến toàn cục) để có được thông tin vào và ra khỏi một hàm là thông qua thông qua biến trong danh sách tham số.

Ví dụ

Một trong những khác biệt chính giữa một kịch bản và một chức năng là truy cập vào các biến trong không gian làm việc. Ví dụ, giả sử trong không gian làm việc, bạn đã xác định hai biến a = 10b = 20. Các biến này được định nghĩa tại dòng lệnh của dấu nhắc chính.

Script tập tin - display_mult.m

disp(a*b);

Nhập display_mult sẽ hiển thị sản phẩm ab trong không gian làm việc, tức là 10*20 hoặc 200.

Nhưng nếu bạn đã định nghĩa một hàm, được gọi là display_mult định nghĩa trong một tập tin có cùng tên:

Chức năng tập tin - display_mult.m

function display_mult(a,b) 
    disp(a*b); 
end 

Bạn sẽ phải bao gồm hai các biến làm đối số cho cuộc gọi hàm. Vì vậy, display_mult sẽ không hoạt động lần này kể từ ab không tồn tại trong không gian làm việc của hàm. Bạn sẽ phải bao gồm chúng bằng cách chạy display_mult(a,b) sẽ hiển thị kết quả mong muốn.

Giải thích đơn giản

Mỗi câu lệnh trong một kịch bản tương đương với cách gõ chúng ra ở cửa sổ lệnh của MATLAB. Bạn chỉ lưu trữ chúng trước khi trong một tập tin!

Một hàm, mặt khác, lấy các đối số và là không gian làm việc "mới", tách biệt với không gian làm việc chính.

Lưu ý:end ở cuối cuộc gọi chức năng là tùy chọn nhưng tôi muốn thêm nó vào để sắp xếp mọi thứ. Tất nhiên, nếu bạn có nhiều định nghĩa hàm trong một tệp, tất cả chúng sẽ phải kết thúc bằng end. Ngoài ra, bạn không thể có một tập lệnh và định nghĩa hàm trong cùng một tệp.

+0

ví dụ? bạn có thể cho tôi một số ví dụ không? – izzat

+0

Đã thêm ví dụ và mở rộng giải pháp – Jacob

Các vấn đề liên quan