matlab - 有没有一种方法可以使用 Matlab 中的 if/else 语句自动将文件从不同位置移动?
问题描述
我有一个 Matlab 脚本,它查看 .xsl 文件和 DICOM 文件中的信息。我已经记录了需要匹配的两个文件的信息。我创建了一个脚本,可以查看两个文件的信息,并在 if/else 语句中显示“完美匹配”、“错误 1”、“错误 2”。之后,我通常手动将文件移动到各自的文件夹中。
但是,我最近获得了执行此验证所需的大量文件。除了手动移动文件之外,有没有一种方法可以自动执行此操作,希望通过将其与 if/else 语句相结合?这是代码片段: 编辑:我在评论中被告知我提供的代码还不够,所以我添加了更多
clear;clc
Mosaiq_missing=[];Mismatch_dose_plan=[];no_plan=[];false_dose=[];
dirpat='C:\Users\X\Desktop\pts\';
[patnamen,~]=getfil(dirpat);
dirloc='C:\Users\X\Desktop\MOSAIQ_values.xlsx';
MOSAIQ=readtable(dirloc);
% MOSAIQ.ida=cellstr(num2str(MOSAIQ.ida));
oma=MOSAIQ(ismember(MOSAIQ.ida, patnamen),:);
co=[2 2 2 2 2 2];dc=1;
for pp=1:length(patnamen)
clearvars -except dirpat patnamen dc pp Mosaiq_missing Mismatch_dose_plan no_plan false_dose wrong_dose_dir repeat oma oma_namen
mismatch=0; hl=0;
patientname=patnamen{pp};
if ismember(patientname,oma.ida)
display(['loading patient: ',patientname])
dirloc=[fullfile(dirpat,patientname),'\'];
pa = genpath(dirloc);
splitfil=regexp(pa,'\;','split')';
% read dose plan locations
DOSEplek=cellfun(@isempty,regexp(splitfil,'DOSE'))==0;
PLANplek=cellfun(@isempty,regexp(splitfil,'PLAN'))==0;
DOSE=splitfil(DOSEplek);
PLAN=splitfil(PLANplek);
if sum(PLANplek)>0
[RTplan_files,~]=getfil(PLAN{1});
for pl=1:length(RTplan_files)
info=dicominfo(fullfile(PLAN{1},RTplan_files{pl}));
beam_name=cell(length(fieldnames( info.FractionGroupSequence.Item_1.ReferencedBeamSequence)),1);
BeamMetersets=nan(length(fieldnames( info.FractionGroupSequence.Item_1.ReferencedBeamSequence)),1);
for p=1:length(fieldnames( info.FractionGroupSequence.Item_1.ReferencedBeamSequence))
BeamMetersets(p)=info.FractionGroupSequence.Item_1.ReferencedBeamSequence.(['Item_',num2str(p)]).BeamMeterset;
beam_name(p)={info.BeamSequence.(['Item_',num2str(p)]).BeamDescription};
end
fraction_number=info.FractionGroupSequence.Item_1.NumberOfFractionsPlanned;
end
%match to MOSAIQ_EXCEL_FILE
% This is where things get separated, So I assume this is where movefile code would go
loc=ismember(oma.ida,patientname);%cellfun(@isempty,regexpi(oma_namen,patientnaam))==0;
MOSAIQ_sel=table2cell(oma(loc,:));
if size(MOSAIQ_sel,1)==size(BeamMetersets,1)
if sum(~ismember(BeamMetersets,cell2mat(MOSAIQ_sel(:,10))))==0
disp('Perfect Match!!!')
else
disp('Error1')
BeamMetersets
mosaiq_beam_values=cell2mat(MOSAIQ_sel(:,10))
end
else
disp('Error 2')
end
end
end
end
我尝试使用 movefile,但无法正常工作。我希望文件移动到如下位置: 'C:\Users\X\Desktop\PerfectMatch\' 'C:\Users\X\Desktop\Error1\' 'C:\Users\X\Desktop\Error2\'
解决方案
推荐阅读
- java - “在分布式环境中,不使用多线程” - 为什么?
- mongodb - 如何在猫鼬中获取与用户关联的所有项目
- nestjs - TypeORM 生成正确的查询但不返回数据
- arrays - 如何映射数组以更改它?
- mongodb - 如何使用 mongodb 将日期字段更新为字符串?
- python - 如何在熊猫中进行条件比较
- python - discord.py - 不返回更改的权限
- android - 我实现了 VirtualAPK 库并让任务 ':app:compileDebugJavaWithJavac' 的执行失败
- javascript - 使用 PHP (in_array) 检查值是否存在于数组中
- python - python程序中的Prolog查询未返回正确答案