2012-04-05 22 views
6

Tôi có matlab tập tin matlab_param.mCách gần nhất để truyền đối số chuỗi từ tập tin bash script sang MATLAB là gì?

function matlab_param(param1, param2) 

disp(sprintf('param1 : %s', param1)); 
disp(sprintf('param2 : %s', param2)); 

Và tôi muốn có bash script bash_param.sh trông giống như

#!/bin/bash 
echo $1 
echo $2 
./matlab_param.m $1 $2 

Tôi muốn chạy bashscirpt này

./bash_param.sh hello world 

và nó sẽ in

hello 
world 
param1 : hello 
param2 : world 

Tôi googled trong nhiều giờ và không thể tìm thấy bất kỳ giải pháp chính xác cho việc này. Người gần nhất mà tôi nhận được cho đến nay là

matlab -nodesktop -nosplash -nodisplay -r "try, run ('./test_param.m'); end; quit" 

mà tôi cần phải mã hóa tất cả các thông số.

Trả lời

5

Bạn có thử:

#!/bin/bash 
echo $1 
echo $2 
matlab -nodesktop -nosplash -nodisplay -r "try, test_param('$1','$2'); end; quit" 
+0

Rất tiếc, tôi không giải thích rõ ràng. Bây giờ tôi thêm lời giải thích thêm. Nếu tôi thử cách bạn đề xuất, nó sẽ không in những $ 1 và $ 2 –

+0

Ok, tôi đã chỉnh sửa. – Oli

2

Nếu bạn muốn để có thể vượt qua đối số cho hàm matlab tôi khuyên bạn nên để tạo ra một kịch bản đơn giản:

matlab -nodisplay -r "try, test_param('$1','$2'); end; exit" 

Sau đó, bạn có thể chạy trong unix:

$ sh test_param.sh hello world 

Không chắc chắn mặc dù cách tránh đầu ra tiêu đề MATLAB và nếu nó được chuyển vào đường ống.

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