Tên chức năng phải là duy nhất trong MATLAB. Nếu không, vì vậy có các tên trùng lặp, sau đó MATLAB sử dụng tên đầu tiên mà nó tìm thấy trên đường dẫn tìm kiếm của bạn.
Có nói rằng, có một số tùy chọn mở cho bạn.
Tùy chọn 1. Sử dụng @ thư mục, đặt mỗi phiên bản vào một thư mục riêng biệt. Về cơ bản, bạn đang sử dụng khả năng của MATLAB để áp dụng một hàm cho các lớp cụ thể. Vì vậy, bạn có thể thiết lập một cặp thư mục:
@char
@double
Đặt bản sao của myfun.m trong các thư mục tương ứng. Bây giờ khi MATLAB nhìn thấy một đầu vào đôi để myfun, nó sẽ trực tiếp cuộc gọi đến phiên bản đôi. Khi MATLAB nhận được đầu vào char, nó đi vào phiên bản char.
CẨN THẬN. Không đặt các thư mục @ này một cách rõ ràng trên đường dẫn tìm kiếm của bạn. DO đặt chúng INSIDE một thư mục trên đường dẫn tìm kiếm của bạn. Một vấn đề với sơ đồ này là nếu bạn gọi hàm với đầu vào chính xác SINGLE, MATLAB có thể sẽ phù hợp, vì vậy bạn sẽ cần các phiên bản riêng biệt cho đơn, uint8, int8, int32, v.v. Bạn không thể chỉ có một phiên bản cho tất cả các loại số.
Tùy chọn 2. Chỉ có một phiên bản của hàm, kiểm tra đối số đầu tiên để xem nó là số hay char, sau đó các chi nhánh thực hiện một trong hai tác vụ khi thích hợp. Cả hai phần của mã sẽ đơn giản nhất là trong một tập tin sau đó. Lược đồ đơn giản sẽ có các hàm con hoặc các hàm lồng nhau để thực hiện công việc.
Tùy chọn 3. Đặt tên cho các hàm khác nhau. Hey, nó không phải là kết thúc của thế giới.
Tùy chọn 4: Theo Shaun chỉ ra, người ta chỉ có thể thay đổi thư mục hiện tại. MATLAB luôn trông đầu tiên trong thư mục hiện tại của bạn, vì vậy nó sẽ tìm thấy hàm trong thư mục đó khi cần thiết. Một vấn đề là đây là thời gian. Bất cứ khi nào bạn chạm vào một thư mục, mọi thứ sẽ chậm lại, bởi vì hiện tại có đầu vào đĩa cần thiết.
Phần tồi tệ nhất của việc thay đổi thư mục là cách bạn sử dụng MATLAB. Đó là (IMHO) một phong cách lập trình kém để buộc người dùng phải luôn ở trong một thư mục cụ thể dựa trên các mã đầu vào mà họ muốn chạy. Tốt hơn là một chương trình điều khiển dữ liệu. Nếu bạn sẽ đọc hoặc ghi dữ liệu, thì hãy nằm trong thư mục THAT.Sử dụng đường dẫn tìm kiếm MATLAB để phân loại tất cả các chức năng của bạn, vì các hàm có xu hướng không thay đổi nhiều. Đây là một cách làm việc sạch hơn nhiều so với yêu cầu người dùng di chuyển đến các thư mục cụ thể dựa trên cách họ sẽ gọi một hàm cụ thể.
Cá nhân, tôi có xu hướng đề xuất tùy chọn 2 là tốt nhất. Nó sạch sẽ. Nó chỉ có MỘT chức năng chính mà bạn cần phải làm việc. Nếu bạn muốn giữ lại khu chức năng, hãy đặt chúng thành các hàm lồng nhau hoặc phụ riêng biệt bên trong thân hàm chính. Bên trong tất nhiên, họ sẽ có tên riêng biệt, dựa trên cách họ được điều khiển.
câu hỏi liên quan: [Thực hiện một tập tin hoặc gọi một hàm có tập tin được đặt trong một thư mục khác với MATLAB?] (http://stackoverflow.com/questions/6153323/) –
Darn bạn Eitan, bạn luôn tìm thấy câu trả lời như phút trước tôi haha gọi tốt mặc dù! – Shaun314