How to remove rows with any string from matrix

1 回表示 (過去 30 日間)
Aidan O'Farrell
Aidan O'Farrell 2014 年 6 月 25 日
コメント済み: Aidan O'Farrell 2014 年 6 月 25 日
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 件のコメント
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 日
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 日
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))

カテゴリ

Help Center および File ExchangeData Import and Export についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by