快速提问,
我想在 Matlab 中使用 sprintf 从 50 到 70 进行计数。此示例打印 0101-0120
for i = 1:20
filename = sprintf('Brain_01%02d.dcm', i);
[X(:,:,1,i), amap] = dicomread(filename);
end
如何将其更改为打印 0151-0170?
起初答案似乎很明显,但似乎另一个问题可能与如果不是从一个开始就X
被破坏的索引有关。i
这是在处理 , 的预分配时解决该问题的一种方法X
,
imgInds = 151:170;
di = dicominfo(sprintf('Brain_%04d.dcm',imgInds(1)));
X = zeros(di.Height,di.Width,1,numel(imgInds),class(dicomread(di))); % modify
for i = 1:numel(imgInds),
filename = sprintf('Brain_%04d.dcm', imgInds(i));
[X(:,:,1,i), amap] = dicomread(filename);
end
为了清楚起见,我认为最好sprintf
用 with%04d
而不是01%02d
. 您应该X
在标记的行上设置相应的大小modify
,尤其是第三个维度,因为我假设您的实际代码不会有这个1
。
I'm guessing this should do it:
for i = 51:70
filename = sprintf('Brain_01%02d.dcm', i);
[X(:,:,1,i), amap] = dicomread(filename);
end
谢谢您的反馈!实际上我需要做的(为了我的目的)是:
for i = 1:20
filename = sprintf('Brain_01%02d.dcm', i + 49);
[X(:,:,1,i), amap] = dicomread(filename);
end
这使得计数从 50 开始。