shell和matlab之間的參數傳遞比shell和Python之間的參數傳遞要簡單,在matlab程序中(以.m腳本文件爲例,其餘程序如函數等未測試)不須要進行任何配置,直接使用便可,見下面代碼:
test.m
###
attName = att;
attName = [attName,'/'];
dataType = [dt,'/'];
data_path = ['/media/ntfs-1/',dataType,attName,'train_valid_test.mat'];
struc_path = [num2str(struc1),'-',num2str(struc2),'-',num2str(struc3)];
disp(data_path);
disp(stru_path);
###
run.sh
###
hls1=750
hls2=1000
hls3=750
attName='b'
dataType='9box_max'
/usr/local/MATLAB/R2011a/bin/matlab -nodesktop -nosplash -r "struc1=$hls1,struc2=$hls2,struc3=$hls3,att='$attName',dt='$dataType';test.m;quit"
###
運行run.sh 結果爲:
/media/ntfs-1/9box_max/b/train_valid.test.mat
750-1000-750
說明:
1. 由上面能夠看到,shell和matlab之間的參數傳遞比shell與Python之間的參數傳遞要簡單,在matlab程序中直接進行使用便可,不須要另外加載或者編寫接口。好比在test.m中「attName=att;」,這裏的att就是shell腳本中的"att='$attName'"。
2. 在shell中調用matlab傳遞參數時,若參數是字符串類型,則應該在參數值外面加上引號,好比上面的att='$attName',可是調用Python的時候則沒有這個規定。
3. 上面的run.sh 中的「-nodesktop -nosplash -r」指的是不打開matlab圖形界面;「-r」後面的引號內容分爲三塊,每一塊之間用分號「;」隔開。第一塊是具體的參數,第二塊就是要調用的matlab程序,第三塊「quit」是指運行完matlab程序的時候,跳出matlab程序,不然shell命令還留在matlab的命令行中。