Matlab - Eliminar elementos de un cell

 
Vista:

Eliminar elementos de un cell

Publicado por Sergio (12 intervenciones) el 12/12/2017 13:35:54
Hola. Tengo el siguiente problema:

Dispongo de un cell llamando FileName2 de dimensión 1x376, en el cuál en cada posición hay un elemento de caracteres (char) del tipo Axxxxx.snx o del tipo Axxxxxp.snx. Me gustaría poder eliminar aquellos elementos del tipo Axxxxxp.snx que tiene 1 carácter más que el otro tipo.

Muchas gracias por su ayuda, un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Daniel
Val: 269
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Eliminar elementos de un cell

Publicado por Daniel (264 intervenciones) el 12/12/2017 20:48:47
Hay varias formas de hacerlo según lo que distinga a los elementos, pongo ambas para que veas cual se adecua a esta circunstancia:

1
2
3
4
5
6
% esto es para crear artificilmente la variable FileName2 para probarlo (esto no deberías ponerlo en tu código)
clear all
for j=1:188
    FileName2{1,2*j-1}=['A' num2str(j,'%05d') '.snx'];
    FileName2{1,2*j}=['A' num2str(j,'%05d') 'p.snx'];
end


1
2
3
4
5
6
7
8
9
% opcion 1: por caracteres que lo distinguen 
q1=strfind(FileName2(1,:),{'p.snx'}); % encuentra cuales terminan con p.snx
s1=cellfun(@isempty,q1); % validación lógica 1=(no lo encontró) 0=(lo encontró)
w1=FileName2(s1); % crea una variable cell en base a la condición lógica s1
 
% opcion 2: por cantidad de caracteres
q2=cellfun(@numel,FileName2); % cuenta el número de caracteres
s2=(q2==10); % validación lógica 1=(10 caracteres) 0=(no tiene 10 caracteres)
w2=FileName2(s2); % crea una variable cell en base a la condición lógica s2

Ya sea w1 o w2 son los resultados, es decir, la parte de FileName2 que cumple las condiciones

Tambien de manera abreviada puedes borrar de la variable original FileName2 los elementos de 11 caracteres usando

1
FileName2(cellfun(@numel,FileName2)==11)=[];


Comentanos como te fue

Saludos

Daniel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar