MATLAB: Hi, I have a problem with a script given to me by the teacher , I don’t know what is its point nor its problem

csvsprintfxlsread

function A=einlesen(Anzahl)
% Einleseroutione
for i=1:Anzahl
name=sprintf('%i',i);
while length(name)<4, name=['0' name]; end
name=[name '.csv'];
A(:,:,i)=xlsread(name);
end

Best Answer

The function reads .CSV files into a numeric matrix. It uses a very awkward while loop to append leading zeros to the filename, to ensure that the name is atleast four characters long. The code then calls xlsread to get the data from some file.
The code is not well written. It would be better to:
  • Use sprint to generate the correct filename, complete with leading zeros:
>> sprintf('%04i.csv',1)
ans = 0001.csv
  • Preallocate the array that the data is being read into:
C = cell(1,Anzahl);
for k = 1:Anzahl
name = sprintf('%04i.csv',k);
C{k} = xlsread(name);
end
A = cat(3,C{:});