What is the alternative for startsWith function in Matlab 2013?

11 visualizaciones (últimos 30 días)
Kapa Kudaibergenov
Kapa Kudaibergenov el 8 de Nov. de 2019
Respondida: Akansha Saxena el 21 de Oct. de 2020
TF = startsWith(names_cell,pattern)
I have a snippet of code written above. The names_cell is a cell array and pattern is a string array.
I need to find an alternative in Matlab R2013b, where there is no such a function.

Respuestas (2)

Walter Roberson
Walter Roberson el 8 de Nov. de 2019
temp = arrayfun(@(S) strncmp(names_cell, S, length(S)), pattern, 'uniform', 0);
nd = ndims(temp{1}) + 1;
TF = or(cat(nd, temp{:}), nd);
This is designed to work no matter how many dimensions names_cell has. The output should be the same size as names_cell is.
The code can be simplified for the more common case where pattern is a character vector or scalar string array.
  2 comentarios
Kapa Kudaibergenov
Kapa Kudaibergenov el 11 de Nov. de 2019
Why doesn't it create the array of the same size as names_cell? It should create e.g. 1x12 array with 1s and 0s, instead it creates 9x12 array with only 1s.
Walter Roberson
Walter Roberson el 11 de Nov. de 2019
What is size(names_cell) and size(pattern) ?
At one point some functions shifted from giving a row vector result in some cases to giving a column vector result instead; I would need to test further on that point. I am not sure I have R2013b still installed though.

Iniciar sesión para comentar.


Akansha Saxena
Akansha Saxena el 21 de Oct. de 2020
TF = cellfun(@(x) strncmpi(x, pattern, length(pattern)),names_cell);

Categorías

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

Etiquetas

Productos


Versión

R2013b

Community Treasure Hunt

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

Start Hunting!

Translated by