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的命令行中。
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的命令行中。