How to remove rows with any string from matrix

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 件のコメント

José-Luis
José-Luis 2014 年 6 月 25 日
Is your matrix a cell array? Or are you trying to import a text file?
Aidan O'Farrell
Aidan O'Farrell 2014 年 6 月 25 日
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) 2014 年 6 月 25 日
For this, my solution should work.

サインインしてコメントする。

 採用された回答

Jos (10584)
Jos (10584) 2014 年 6 月 25 日
編集済み: Jos (10584) 2014 年 6 月 25 日

0 投票

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 件のコメント

Aidan O'Farrell
Aidan O'Farrell 2014 年 6 月 25 日
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

サインインしてコメントする。

その他の回答 (1 件)

Azzi Abdelmalek
Azzi Abdelmalek 2014 年 6 月 25 日
編集済み: Azzi Abdelmalek 2014 年 6 月 25 日

0 投票

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))

カテゴリ

ヘルプ センター および File ExchangeCharacters and Strings についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by