Matlab:使用动态字段名编写 dicom 元数据
Matlab: writting dicom metadata with dynamic fieldnames
我正在尝试将 dicom 元信息写入 dicom 文件。这里的字段名根据给定的元信息动态变化。
for j = 1:obj.pln.propStf.numOfBeams
eval(['meta.FractionGroupSequence.Item_1.ReferencedBeamSequence.Item_' num2str(j) '.ReferencedBeamNumber = j;'])
eval(['meta.FractionGroupSequence.Item_1.ReferencedBeamSequence.Item_' num2str(j) '.BeamDoseSpecificationPoint = [j,j,j];'])
eval(['meta.FractionGroupSequence.Item_1.ReferencedBeamSequence.Item_' num2str(j) '.BeamDose = j;'])
eval(['meta.FractionGroupSequence.Item_1.ReferencedBeamSequence.Item_' num2str(j) '.BeamMeterset = j;'])
eval(['meta.FractionGroupSequence.Item_1.ReferencedBeamSequence.Item_' num2str(j) '.BeamDosePointDepth = j;'])
eval(['meta.FractionGroupSequence.Item_1.ReferencedBeamSequence.Item_' num2str(j) '.BeamDosePointSSD = j;'])
end
正如您在此处看到的那样 meta.FractionGroupSequence.Item_1.ReferencedBeamSequence.Item_' num2str(j) '.ReferencedBeamNumber = j;
结构的字段名随 obj.pln.propStf.numOfBeams
中给出的波束数量动态变化。
这种方法的问题是,如果我要尝试拥有类似的东西:eval(['meta.FractionGroupSequence.Item_1.ReferencedBeamSequence.Item_' num2str(j) '.ReferencedBeamNumber = 'TEST';'])
。 eval 函数尝试查找文本 'TEST'.
所以问题是,对于给定的问题是否有不同的方法而不是使用 eval?
MATLAB 允许您使用字符串访问动态结构字段,而不是使用 eval
:
mystruct.hello=1;
mystruct.('hello')=1; % equivalent.
就这样:
meta.FractionGroupSequence.Item_1.ReferencedBeamSequence.(['Item_'num2str(j)']).ReferencedBeamNumber = j;
我正在尝试将 dicom 元信息写入 dicom 文件。这里的字段名根据给定的元信息动态变化。
for j = 1:obj.pln.propStf.numOfBeams
eval(['meta.FractionGroupSequence.Item_1.ReferencedBeamSequence.Item_' num2str(j) '.ReferencedBeamNumber = j;'])
eval(['meta.FractionGroupSequence.Item_1.ReferencedBeamSequence.Item_' num2str(j) '.BeamDoseSpecificationPoint = [j,j,j];'])
eval(['meta.FractionGroupSequence.Item_1.ReferencedBeamSequence.Item_' num2str(j) '.BeamDose = j;'])
eval(['meta.FractionGroupSequence.Item_1.ReferencedBeamSequence.Item_' num2str(j) '.BeamMeterset = j;'])
eval(['meta.FractionGroupSequence.Item_1.ReferencedBeamSequence.Item_' num2str(j) '.BeamDosePointDepth = j;'])
eval(['meta.FractionGroupSequence.Item_1.ReferencedBeamSequence.Item_' num2str(j) '.BeamDosePointSSD = j;'])
end
正如您在此处看到的那样 meta.FractionGroupSequence.Item_1.ReferencedBeamSequence.Item_' num2str(j) '.ReferencedBeamNumber = j;
结构的字段名随 obj.pln.propStf.numOfBeams
中给出的波束数量动态变化。
这种方法的问题是,如果我要尝试拥有类似的东西:eval(['meta.FractionGroupSequence.Item_1.ReferencedBeamSequence.Item_' num2str(j) '.ReferencedBeamNumber = 'TEST';'])
。 eval 函数尝试查找文本 'TEST'.
所以问题是,对于给定的问题是否有不同的方法而不是使用 eval?
MATLAB 允许您使用字符串访问动态结构字段,而不是使用 eval
:
mystruct.hello=1;
mystruct.('hello')=1; % equivalent.
就这样:
meta.FractionGroupSequence.Item_1.ReferencedBeamSequence.(['Item_'num2str(j)']).ReferencedBeamNumber = j;