2013-10-11 61 views
0

快速问题,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?

回答

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。您应该在标记为modify的行上相应地设置X的大小,特别是第三个维度,因为我假设您的实际代码不会包含1

1

我猜这应该这样做:

for i = 51:70 
    filename = sprintf('Brain_01%02d.dcm', i); 
    [X(:,:,1,i), amap] = dicomread(filename); 
end 
1

谢谢你的回应!其实所有我需要做的(对于我而言)是:

for i = 1:20 
filename = sprintf('Brain_01%02d.dcm', i + 49); 
[X(:,:,1,i), amap] = dicomread(filename); 
end 

从50

做出的计数开始