Creating an array out of a for loop.

3 Ansichten (letzte 30 Tage)
Shaun
Shaun am 4 Feb. 2015
Kommentiert: Shaun am 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!

Akzeptierte Antwort

Guillaume
Guillaume am 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 Kommentare
Guillaume
Guillaume am 4 Feb. 2015
Assuming you've called your cell array mycell:
mycell(j, :) = {fName, serDes, instNo};
Shaun
Shaun am 4 Feb. 2015
Thank you very much!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Matrices and Arrays finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by