shell和matlab之間的參數傳遞

 

    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的命令行中。
相關文章
相關標籤/搜索