将 bash 转换为 matlab 以在路径中定义带有字符串变量的文件
Convert bash to matlab to define a file with string variable in pathway
我需要用到一些Matlab的工具箱,好久没用过Matlab了。想知道在识别路径中的文件时如何使用字符串变量作为占位符。比如bash,${SUBJID}/file1/abcd.nii,matlab中的fullpath()是不是也一样,如何将输出保存到对应的pathway中?
a: A001/A001/file1/abcd.nii
b: A001/A001/file2/diff/mask.nii
output: A001/A001/file/output.txt
bash:
export SUBJECTS_DIR=dir\
cd $SUBJECTS_DIR
SUBJID_LIST=[A001, A002, A003, B001, B002, ......]
for SUBJID in "${SUBJID_LIST[@]}"; do function
-a ${SUBJID}/${SUBJID}/file1/abcd.nii
-b ${SUBJID}/${SUBJID}/file2/diff/mask.nii
-output ${SUBJID}/${SUBJID}/file/output; done
matlab:
SUBJID_LIST=[A001, A002, A003, B001, B002, ......]
for i in SUBJID_list
path=dir\
a=fullpath(path,i,abcd.nii) ??
b=fullpath(path,i,mask.nii) ??
output=function(a,b)
writetable(output, "??? output.txt")
end
您可以使用 fullfile
连接文件路径,并使用 strrep
将占位符替换为变量
请注意,您的路径和名称在 MATLAB 中应该用引号引起来。
另外 path
是一个 build-in 函数名,所以我建议避免将它作为变量名。
SUBJID_LIST={'A001', 'A002', 'A003', 'B001', 'B002'};
myPath = 'dir${SUBJID}${SUBJID}\';
for i = 1:numel(SUBJID_LIST)
iPath = strrep( myPath, '${SUBJID}', SUBJID_LIST{i} );
a = fullfile(iPath, 'abcd.nii');
b = fullfile(iPath, 'mask.nii');
output = function(a,b);
writetable(output, fullfile(iPath, 'output.txt');
end
我需要用到一些Matlab的工具箱,好久没用过Matlab了。想知道在识别路径中的文件时如何使用字符串变量作为占位符。比如bash,${SUBJID}/file1/abcd.nii,matlab中的fullpath()是不是也一样,如何将输出保存到对应的pathway中?
a: A001/A001/file1/abcd.nii
b: A001/A001/file2/diff/mask.nii
output: A001/A001/file/output.txt
bash:
export SUBJECTS_DIR=dir\
cd $SUBJECTS_DIR
SUBJID_LIST=[A001, A002, A003, B001, B002, ......]
for SUBJID in "${SUBJID_LIST[@]}"; do function
-a ${SUBJID}/${SUBJID}/file1/abcd.nii
-b ${SUBJID}/${SUBJID}/file2/diff/mask.nii
-output ${SUBJID}/${SUBJID}/file/output; done
matlab:
SUBJID_LIST=[A001, A002, A003, B001, B002, ......]
for i in SUBJID_list
path=dir\
a=fullpath(path,i,abcd.nii) ??
b=fullpath(path,i,mask.nii) ??
output=function(a,b)
writetable(output, "??? output.txt")
end
您可以使用 fullfile
连接文件路径,并使用 strrep
将占位符替换为变量
请注意,您的路径和名称在 MATLAB 中应该用引号引起来。
另外 path
是一个 build-in 函数名,所以我建议避免将它作为变量名。
SUBJID_LIST={'A001', 'A002', 'A003', 'B001', 'B002'};
myPath = 'dir${SUBJID}${SUBJID}\';
for i = 1:numel(SUBJID_LIST)
iPath = strrep( myPath, '${SUBJID}', SUBJID_LIST{i} );
a = fullfile(iPath, 'abcd.nii');
b = fullfile(iPath, 'mask.nii');
output = function(a,b);
writetable(output, fullfile(iPath, 'output.txt');
end