2013-09-27 67 views
5

Có cách nào để làm cho MATLAB chạy một đoạn mã nhất định mỗi khi bạn cố gắng chạy tập lệnh không? Ví dụ, tôi muốn MATLAB để chạyChạy mã "mở đầu" trong MATLAB

sprintf('Here we go...') 

ngay sau khi tôi nhấn nút Run và sau đó chuyển sang thực hiện kịch bản của tôi, vì vậy nếu kịch bản của tôi đã

i = 1; 
i = i * i; 
display(i) 

tôi sẽ nhận được

ans = 

Here we go... 


i = 

     1 

PS Tôi sẽ đánh giá cao nếu những người có uy tín cao hơn hãy sửa lại tiêu đề câu hỏi của tôi để nó phản ánh tốt hơn nội dung.

+0

Mặc dù có thể phản hồi cho bạn khi nhấp vào nút chạy trong giao diện người dùng, nó có thể sẽ là một giải pháp không được cấp phép khủng khiếp hoàn toàn là quá mức cần thiết. Do đó, hãy thử một số giải pháp đã cho (đơn giản hơn và ổn định hơn) cũng sẽ hoạt động nếu bạn gọi một kịch bản theo tên của nó thay vì bằng nút chạy. –

+0

@ DennisJaheruddin nó thực sự không phải là khủng khiếp. – StrongBad

+1

Sia, là bình luận của bạn "ngay sau khi tôi nhấn nút Run" chính xác những gì bạn có nghĩa là, hoặc bạn chỉ có nghĩa là một cái gì đó nên được thực hiện bất cứ khi nào một mã chạy? Các câu trả lời dưới đây được tách ra giữa việc hack GUI và sửa đổi các script. Tôi nghĩ rằng đó là bởi vì chúng tôi không chắc chắn những gì bạn có ý nghĩa. –

Trả lời

3

ngay sau khi tôi nhấn nút Run

Tôi giả sử bạn đang nói về nút chạy trong trình soạn thảo. Trong R2012a có một tính năng được gọi là "Chạy cấu hình".Một cấu hình chạy được liên kết với một tập lệnh cụ thể và bao gồm mã được thực hiện trước khi tập lệnh được chạy. Có vẻ như không phải là một cài đặt chung được sử dụng trên tất cả các chức năng. Tính năng này dường như đã được xóa âm thầm trong R2012b.

Trong R2013b bạn có thể chọn chạy tập lệnh khác. Có lẽ bạn có thể hack editor để lấy tệp hiện tại và sử dụng tập lệnh chạy tùy chỉnh để chạy phần mở đầu của bạn và sau đó là tệp trình chỉnh sửa hiện tại. Điều này có vẻ như rất nhiều công việc để không có nhiều lợi nhuận ...

Bạn có thể tạo một tập tin gọi myrun.m

desktop = com.mathworks.mde.desk.MLDesktop.getInstance; 
jEditor = desktop.getGroupContainer('Editor').getTopLevelAncestor; 
title = jEditor.getTitle; 
currentFilename = char(title.replaceFirst('Editor - ','')); 
fprintf('Here we go...'); 
run(currentFilename); 

và điều này trong trình soạn thảo dưới runRun: type code to runmyrun loại. Một trong những bạn làm điều này một khi nó sẽ ghi nhớ sở thích của bạn và sau đó bạn có thể chạy mã của bạn thông qua myrun với F5. Nó sẽ ghi nhớ tùy chọn của bạn trong quá trình khởi động lại.

1

Không chắc chắn nếu tôi có được những gì bạn muốn, nhưng bạn có thể chia tập tin m của bạn thành mục mã. Ví dụ:

%% Section 1 
sprintf('Here we go...') 

%% Section 2 
i = 1; 
i = i * i; 
display(i) 

%% là phần nghỉ. Đặt con trỏ của bạn trong phần có liên quan và trên tab Trình chỉnh sửa, trong phần Chạy, bấm Chạy phần. (Hoặc nhấn tổ hợp phím Ctrl + Enter)

see here for more info.

+0

Nếu bạn muốn nó được hiển thị mỗi khi một đoạn mã nhất định được chạy, chúng thực sự phải ở trong cùng một phần. –

2

Cách làm này sẽ có một preamble.mdoThis.m. Trong preamble.m bạn muốn có điều này:

sprintf('Here we go...') 

và sau đó trong doThis.m, bạn phải

preamble 
i = 1; 
i = i * i; 
display(i) 

Bí quyết duy nhất để làm công việc này là phải có cả hai trên con đường, hoặc trong cùng một thư mục.

0

Nếu bạn chỉ muốn điều này cho một (hoặc một vài tập lệnh) hoặc thêm lệnh trong tập lệnh hoặc thực hiện hàm/phím tắt của trình bao bọc.


Nếu bạn muốn điều này đối với nhiều kịch bản mà không cần đầu vào, bạn có thể tạo một wrapper chung:

Giả sử bạn muốn chạy những thứ như myFun(a,b,c) sau đó tạo một wrapper rằng bạn có thể gọi như thế này:

myWrapper('myFun(a,b,c)')

Sau đó, trước tiên bạn có thể gọi lệnh hiển thị và sau đó sử dụng eval trên đầu vào của myWrapper. Lưu ý rằng điều này sẽ trở nên cồng kềnh nếu cuộc gọi hàm của bạn là đa dòng hoặc chứa dấu ngoặc kép.


Nếu các giải pháp này không thể giúp bạn, bạn có thể cần tự hỏi tại sao bạn đang cố gắng làm điều này và liệu có giải pháp tốt hơn cho vấn đề cơ bản không.

+0

Sidenote: Nếu bạn chỉ muốn xem thông báo để xác nhận rằng bạn đã nhấp đúng: hãy thử nhập một cái gì đó như '1'. Nếu bạn không thấy nó đang được in, Matlab vẫn đang hoạt động. –

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