Creating an array out of a for loop.

3 views (last 30 days)
Shaun
Shaun on 4 Feb 2015
Commented: Shaun on 4 Feb 2015
Using a for loop to create an array of file information however when I run the code I get an array of the correct size but only one cell had data in it...
struct = cell(length(fileID), 3);
for j = 1:length(fileID)
fID = char(fileID(j));
if exist(fID, 'file');
info = dicominfo(fID);
serDes = info.SeriesDescription;
instNo = info.InstanceNumber;
sliceLoc = info.SliceLocation;
L = length(fID);
fName = fID(L-2:L);
struct{k} = [fName, serDes, instNo];
else
end
end
Struct
Any help would be great!

Accepted Answer

Guillaume
Guillaume on 4 Feb 2015
A few things of note:
  • struct is a very common matlab function, don't use this as a variable name regardless of its content.
  • cell arrays and structure are two different container, so don't name a cell array struct or structure or anything that hints at structure. It's just plain confusing to anyone reading your code.
  • Learn to use the end keyword. These two lines:
L = length(fID);
fName = fID(L-2:L);
are equivalent to:
fName = fID(end-2:end);
With that said, the cause of your problem is pretty simple. You're using k as an index to store values in your cell array, whereas your loop index is j. k never changes within your loop.
  3 Comments
Guillaume
Guillaume on 4 Feb 2015
Assuming you've called your cell array mycell:
mycell(j, :) = {fName, serDes, instNo};
Shaun
Shaun on 4 Feb 2015
Thank you very much!

Sign in to comment.

More Answers (0)

Categories

Find more on Matrices and Arrays in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!