快速提问,
我想在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?
答案 0 :(得分:2)
一开始答案似乎很明显,但似乎另一个问题可能与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
代替%04d
来构建01%02d
。您应该在标有X
的行上相应地设置modify
的大小,特别是第三维,因为我假设您的实际代码不会是1
。
答案 1 :(得分:1)
我猜这应该这样做:
for i = 51:70
filename = sprintf('Brain_01%02d.dcm', i);
[X(:,:,1,i), amap] = dicomread(filename);
end
答案 2 :(得分:1)
感谢您的回复!实际上,我需要做的就是(为了我的目的):
for i = 1:20
filename = sprintf('Brain_01%02d.dcm', i + 49);
[X(:,:,1,i), amap] = dicomread(filename);
end
使计数从50开始。