find a row in a multidimensional cell array
古いコメントを表示
Hi, I have a cell variable as follows, temp =
'FBgn0039563' 'FBgn0259937' [0.6195]
'FBgn0039563' 'FBgn0024733' [0.5698]
'FBgn0039563' 'FBgn0011236' [0.5247]
'FBgn0039563' 'FBgn0053864' [0.5155]
'FBgn0039563' 'FBgn0035951' [0.5781]
'FBgn0039563' 'FBgn0001224' [0.5462]
'FBgn0039563' 'FBgn0002914' [0.5162]
'FBgn0039563' 'FBgn0264492' [0.8405]
'FBgn0039563' 'FBgn0000259' [0.7570]
'FBgn0039563' 'FBgn0004103' [0.5374]
I want to search a key =['FBgn0039563' 'FBgn0264492' [0.8405]] inside temp. I need the row index of key in temp. Is it possible?
Thanks in advance,
Best Regards, Wasim
1 件のコメント
Wasim Aftab
2017 年 9 月 26 日
編集済み: Wasim Aftab
2017 年 9 月 26 日
採用された回答
その他の回答 (2 件)
Jan
2017 年 7 月 4 日
Search = {'FBgn0039563' 'FBgn0264492' [0.8405]}
Match = strcmp(temp(:, 1), Search{1}) & ...
strcmp(temp(:, 2), Search{2}) & ...
cat(1, temp{:, 3}) == Search{3};
Index = find(Match);
3 件のコメント
Wasim Aftab
2017 年 7 月 5 日
Jan
2017 年 7 月 5 日
@Wasim Aftab: And therefore it would be useful, if you explain the needs exactly. In your original question the key was a single row only.
Then:
Match = ismember(temp(:, 1), Search(1, :)) & ...
ismember(temp(:, 2), Search(2, :)) & ...
ismember(cat(1, temp{:, 3}), cat(1, Search{3, :}));
Wasim Aftab
2017 年 7 月 7 日
Andrei Bobrov
2017 年 7 月 4 日
find(all(ismember(temp(:,1:2),key(1:2)),2) & ismember([temp{:,3}]',key{3}))
7 件のコメント
Wasim Aftab
2017 年 7 月 5 日
Andrei Bobrov
2017 年 7 月 5 日
編集済み: Andrei Bobrov
2017 年 7 月 5 日
:)
find(all(ismember(temp(:,1:2),key(:,1:2)),2) & ismember([temp{:,3}]',[key{:,3}]))
Wasim Aftab
2017 年 7 月 7 日
Andrei Bobrov
2017 年 7 月 7 日
Thank you Wasim!
Wasim Aftab
2017 年 9 月 26 日
Andrei Bobrov
2017 年 9 月 26 日
[l,ii] = ismember(temp,key,'rows');
Wasim Aftab
2018 年 2 月 2 日
編集済み: Wasim Aftab
2018 年 2 月 2 日
カテゴリ
ヘルプ センター および File Exchange で Creating and Concatenating Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!