Borrar filtros
Borrar filtros

Calling characters from character arrays

4 visualizaciones (últimos 30 días)
Gokhan Kayan
Gokhan Kayan el 22 de En. de 2018
Comentada: Gokhan Kayan el 22 de En. de 2018
I have an charecter array that contains so many characters and I want to call 4 th character from each row. How can I do it ?
For example consider that I have 6x1 character matrix like
Adana
mersin
hatay
iskenderun
cemre
cebir
I want to call 4 th character of each row and form a new 6x1 matrix with them like
n
s
a
e
r
i
  1 comentario
Guillaume
Guillaume el 22 de En. de 2018
What you have is either
  • a 6x1 cell array, where each cell is a 1xN char array
  • a 6x1 string array (only in R2016b or later)
This is definitively not a 6x1 character array, which by definition, would have 6 letters vertically and only one letter horizontally.

Iniciar sesión para comentar.

Respuesta aceptada

Birdman
Birdman el 22 de En. de 2018
Editada: Birdman el 22 de En. de 2018
str='adana mersin hatay iskenderun cemre cebir';
str=regexp(str,'[a-z]*','match');
for i=1:numel(str)
a{i}=str{i}(4);
end
or instead of for loop:
cellfun(@(x) x(4),str)
EDIT:
After Guillaume's warning, different and easier approach for constructing the demo data and solution:
str='adana mersin hatay iskenderun cemre cebir';
str=strsplit(str,' ');
cellfun(@(x) x(4),str)
  3 comentarios
Birdman
Birdman el 22 de En. de 2018
Yes, I understood what you mean about it. Thanks.
Gokhan Kayan
Gokhan Kayan el 22 de En. de 2018
Thank you so much :)

Iniciar sesión para comentar.

Más respuestas (1)

Walter Roberson
Walter Roberson el 22 de En. de 2018
"For example consider that I have 6x1 character matrix like"
No, a 6 x 1 character matrix cannot have multiple characters in the same row. You might have a 6 x 1 string matrix, or you might have a 6 x 1 cell array of characters.
If you have 6 x 10 (or wider) character array A, then A(:,4)
If you have a 6 x 1 cell array of characters or a 6 x 1 string array A then one of the approaches is cellfun(@(S) S(4), A) . In the case of string arrays, another approach is extractBetween(A, 4, 4) {with no loop} -- but note that this would return a 6 x 1 string array with each string being a single character long, so if you wanted the results as 6 x 1 char then you would need to char() the result of the extractBetween()

Categorías

Más información sobre Characters and Strings en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by