快速問題,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
做出的計數開始