¿Cómo extraer números de la array de celdas en MATLAB?

En este artículo, vamos a discutir la extracción de números de la array de celdas con la ayuda de las funciones regexp() , str2double() , cat() e isletter() .

¿Qué es una array de celdas?

Una array de celdas no es más que un tipo de datos que tiene contenedores de datos indexados llamados celdas, donde cada celda contiene cualquier tipo de datos. Contiene principalmente una lista de textos, combinaciones de texto y números, o arrays numéricas de diferentes tamaños. 

Ejemplo:

Matlab

% MATLAB code for put data in the cell array
A = {2, 4, 'gfg'}
B = {1, 'GFG', {5; 10; 15}}

Producción:

Usando expresión regular()

La función regexp() se usa para hacer coincidir la expresión regular. Es sensible a mayúsculas y minúsculas.

Sintaxis:

startIndex = regexp(string, expresión)

[startIndex, endIndex] = regexp(string, expresión)

fuera = expresión regular (string, expresión, clave de salida)

  • startIndex = regexp(str, expression) se usa para devolver el índice inicial de cada substring de str que coincide con los patrones de caracteres especificados por la expresión regular. Si no hay coincidencias, startIndex es una array vacía.
  • [startIndex,endIndex] = regexp(str,expression) se usa para devolver los índices inicial y final de todas las coincidencias.
  • regexp(str, expression, outkey) se utiliza para devolver la salida especificada por la clave de salida. Por ejemplo, si outkey es ‘coincidencia’, esta función devuelve las substrings que coinciden con la expresión en lugar de sus índices iniciales.

Ejemplo:

Matlab

% MATLAB code for regexp with strjoin()
% Initializing a cell array
A = {'gfg'; 'gfg1.23GFG'; '5gfg10'};
b=regexp(A,'\d+(\.)?(\d+)?','match')
out=strjoin([b{:}],'')

Producción:

Usando str2double()

La función str2double() se usa para la conversión de strings a valores de doble precisión.

Sintaxis:

str2double(string)

Aquí, str2double(string) se usa para convertir el texto en la string especificada a valores de doble precisión.

Ejemplo:

Matlab

% MATLAB code for regexp() demonstration
% Initializing a cell array
A = {'gfg'; 'gfg1.23GFG'; '5gfg10'};
  
% Calling the regexp() function over the
% above cell array to extract number part
B = regexp(A,'\d+(\.)?(\d+)?','match');
  
% Calling the str2double() function to 
% convert the text to double-precision values
out = str2double([B{:}])

Producción:

out =
   1.2300    5.0000   10.0000

usando gato()

La función cat() se usa para concatenar las arrays especificadas.

Sintaxis:

gato (tenue, A, B)

gato(dim, A1, A2 ,…, An)

  • cat(dim, A, B) se usa para concatenar «B» al final de «A» junto con la dimensión «dim» cuando A y B tienen tamaños compatibles, es decir, las longitudes de las dimensiones coinciden excepto por la dimensión operativa dim .
  • cat(dim, A1, A2, …, An) se usa para concatenar “A1, A2, …, An” junto con la dimensión dim.

Matlab

% MATLAB code for extract numbers from
% cell using regexp with strcat()
% Initializing a cell array
A = {'gfg'; 'gfg1.23GFG'; '5gfg10'};
A1 = regexp(A,'[\d*\.]*\d*','match')
A2 = [A1{:}]
out = str2double(strcat(A2{:}))

Producción:

Usando isletter()

La función isletter() se usa para encontrar la array de elementos que son letras del alfabeto.

Sintaxis:

isleta(‘string’)

Aquí, isletter(‘string’) se usa para devolver una array del mismo tamaño que la «string» especificada que contiene lógico verdadero, es decir, 1 cuando los elementos de «string» son letras del alfabeto, y lógico falso, es decir, 0 cuando no lo son. .

Ejemplo 

Matlab

% MATLAB code for isletter() demonstration
% Initializing a cell array
A = {'gfg'; 'gfg1.23GFG'; '5gfg'};
  
% Calling the cat() function to
% concatenate the data of the above
% cell array into a single string
% one after another
S = cat(2, A{:});
  
% Calling the isletter() function
% to filter the numeric value 
S(isletter(S)) = []

Producción:

S = 1.235

Publicación traducida automáticamente

Artículo escrito por Kanchan_Ray y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *