Creating an array out of a for loop.

3 visualizzazioni (ultimi 30 giorni)
Shaun
Shaun il 4 Feb 2015
Commentato: Shaun il 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!

Risposta accettata

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

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Matrices and Arrays in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by