Borrar filtros
Borrar filtros

Looping for cell arrays

1 visualización (últimos 30 días)
Davindra Usov
Davindra Usov el 25 de Abr. de 2023
Comentada: Stephen23 el 1 de Mayo de 2023
I have a 3x11 cell array called down_files where each entry in the array is a filename and each of the rows corresponds to a different value for an angle. For example, row 1 corresponds to angle 1, row 2 to angle 2 and so on. The code below worked when the cell array was 1x11, but now that I have added two more rows to it I need to work for 3x11.
lengths_arr contains values read from each file. So lengths_arr should end up being a 3x11 matrix with each row corresponding to the correct angles again (row 1 for angle 2, row 2 for angle 2.......)
for i = 1:length(down_files)
file_data = fileread(down_files{i})
f = regexp(file_data, 'length(\d+)?)', 'tokens') % ignore. this is just getting the length values from the files
if ~isempty(f)
L = str2double(f{1})
lengths_arr(end + 1) = L
end
end
many thanks
  1 comentario
Stephen23
Stephen23 el 1 de Mayo de 2023
Note that by using a look-around you can avoid one layer of the output's nested cell arrays:
f = regexp(file_data, '(?<=length)\d+)', 'match')

Iniciar sesión para comentar.

Respuestas (1)

chicken vector
chicken vector el 25 de Abr. de 2023
Add a second loop for the rows:
for row = 1 : size(down_files,1)
for col = 1 : size(down_files,2)
fileread(down_files{row,col});
end
end
  2 comentarios
Davindra Usov
Davindra Usov el 25 de Abr. de 2023
Thank you. This gives me a 1x11 instead of a 3x11 for lengths_arr
Adam Danz
Adam Danz el 1 de Mayo de 2023
lengths_arr(row, col) = L

Iniciar sesión para comentar.

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Productos


Versión

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by