How to remove rows with any string from matrix

1 visualización (últimos 30 días)
Aidan O'Farrell
Aidan O'Farrell el 25 de Jun. de 2014
Comentada: Aidan O'Farrell el 25 de Jun. de 2014
Hello,
I'm trying to remove any rows that have any strings in them in my matric, for example:
name and other jibberish
1 0
0 1
0 2
another name and other words
0 3
1 0
other tosh
and change this to just:
1 0
0 1
0 2
0 3
1 0
so you can see, it doesn't matter what the string is, its not specific to what the letters in the string are, I just want it removed. Is there an easy way of doing this?
Thanks
  3 comentarios
Aidan O'Farrell
Aidan O'Farrell el 25 de Jun. de 2014
I'm trying to import a text file, which in itself is causing me a problem as the rows with strings have different column lengths than the rows with values which have the same column lengths!
Jos (10584)
Jos (10584) el 25 de Jun. de 2014
For this, my solution should work.

Iniciar sesión para comentar.

Respuesta aceptada

Jos (10584)
Jos (10584) el 25 de Jun. de 2014
Editada: Jos (10584) el 25 de Jun. de 2014
Assuming that the rows are lines of a text file:
T = textread('data.txt','%s','delimiter','\n')
T2 = T(~cellfun(@(x) any(isletter(x)),T)) % still strings
VAL = str2num(char(T2)) % numbers
  1 comentario
Aidan O'Farrell
Aidan O'Farrell el 25 de Jun. de 2014
This works well. But a note to anyone who wants to use this.. makes sure your value do not contain E (obviously) in replacement of decimal places.
Thank you

Iniciar sesión para comentar.

Más respuestas (1)

Azzi Abdelmalek
Azzi Abdelmalek el 25 de Jun. de 2014
Editada: Azzi Abdelmalek el 25 de Jun. de 2014
fid = fopen('file.txt');
res={};
while ~feof(fid)
res{end+1,1} =fgetl(fid);
end
fclose(fid);
res(cellfun(@(x) any(isletter(x)),res))=[]
out=cell2mat(cellfun(@str2num,res,'un',0))

Categorías

Más información sobre Data Import and Export en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by