快速问题,sprintf混淆(Matlab)
我想使用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?
快速问题,sprintf混淆(Matlab)
我想使用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
与%04d
而不是01%02d
。您应该在标记为modify
的行上相应地设置X
的大小,特别是第三个维度,因为我假设您的实际代码不会包含1
。
我猜这应该这样做:
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
做出的计数开始