将 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