Struct contents reference from a non-struct array object.

1 vue (au cours des 30 derniers jours)
Stelios Fanourakis
Stelios Fanourakis le 23 Avr 2018
folder = 'C:\Echo Images\Stelios\FDB';
file_temp = sprintf('%s\\*.bmp', folder);
filearray = dir(file_temp);
s = max(size(filearray));
for i=1: 1: s
[p, f] = fileparts(file_temp(i).name);
imgname=strcat(folder,'\\',filearray(i).name);
I = imread(imgname);
dicomwrite(I, [imgname '.dcm']);
end
I get the error at [p, f] = fileparts(file_temp(i).name); line. PLease help!!

Réponse acceptée

Jan
Jan le 23 Avr 2018
You want the output of dir, not the one of sprintf:
file_temp = sprintf('%s\\*.bmp', folder);
filearray = dir(file_temp);
for i = 1:s
[p, f] = fileparts(filearray(i).name); % file_temp => filearray
By the way:
  • Please format your code in the forum using the "{} Code" button. It is a good idea to post readable code.
  • An easier method to create the file pattern:
% file_temp = sprintf('%s\\*.bmp', folder)
file_temp = fullfile(folder, '*.bmp');
  • The field .name contains the file name only, so there is no need to split it by fileparts.
p = filearray(i).folder;
f = filearray(i).name;
But you not need p or f at all.
  • Use fullfile instead of strcat:
imgname = fullfile(folder, filearray(i).name)
  1 commentaire
Stelios Fanourakis
Stelios Fanourakis le 27 Avr 2018
Thank you so much Jan. Your answer was really helpful!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur File Operations dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by