Save char array from for loop into a matrix

33 visualizaciones (últimos 30 días)
Devarshi Patel
Devarshi Patel el 5 de Jun. de 2019
Editada: Adam Danz el 6 de Jun. de 2019
names=4;
for i = 1:names
totalnames = filename{indx};
end
where filename is a cell array of a list of 4 file names and indx is the location of the files that the user selected from the list dialog box. I am trying to store the names of the files that the user chose through the for loop into a matrix. Can someone please help me out with this?

Respuesta aceptada

TADA
TADA el 5 de Jun. de 2019
Editada: TADA el 5 de Jun. de 2019
Unless you can guarantee that all file names have the exact same length, you need to use something other than a char matrix. Either a cell array, or a string array:
names=4;
totalnames = cell(1,names);
for i = 1:names
totalnames{i} = filename{indx};
end
  2 comentarios
Devarshi Patel
Devarshi Patel el 5 de Jun. de 2019
I am getting the same name in all the cells in the totalnames array, would you know any solution to that?
Adam Danz
Adam Danz el 5 de Jun. de 2019
Editada: Adam Danz el 5 de Jun. de 2019
That's because you're using the same indx on each loop iteration. The indx value doesn't change in this for-loop. If indx is a vector, you don't need a loop (try out my answer). If indx is not a vector, you should tell us more about that variable.

Iniciar sesión para comentar.

Más respuestas (1)

Adam Danz
Adam Danz el 5 de Jun. de 2019
Editada: Adam Danz el 6 de Jun. de 2019
No need to use a loop. If filenames is a cell array of strings and indx is a logical vectory (or linear index vector), you just need to do this:
totalnames = filename(indx);
If you need it to be a char array, run the line above and then this line:
totalnamesArray = strjoin(filenames,'\n');

Categorías

Más información sobre Logical en Help Center y File Exchange.

Productos


Versión

R2016b

Community Treasure Hunt

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

Start Hunting!

Translated by