find all elements (cells) of a single element (cell) in cell array

6 ビュー (過去 30 日間)
MA
MA 2019 年 8 月 28 日
コメント済み: MA 2019 年 8 月 28 日
I have the following cell array (c) which is 3*2. Now I want to find all elements of lets say c{1,1} which is [3,2]. The answer that I wish to have is (2) which refers to the index of these elements separately. Any possible ideas? thanks
c=
{[3,2]} {[4,1]}
{3} {2}
{4} {1}
  3 件のコメント
MA
MA 2019 年 8 月 28 日
編集済み: MA 2019 年 8 月 28 日
The second row of (c) contains {3} {2} which is actually the same as c{1,1} [3,2] but c{1,1} is combind together. So, 2 here refers to the second row.
Adam Danz
Adam Danz 2019 年 8 月 28 日
I see. So you want to return the row index of C that, when horizontally concatented, equals the vector in C{1,1}.

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

採用された回答

MA
MA 2019 年 8 月 28 日
I found the answer if anyone is looking for something similar
for i=2:size(c,1)
if (isequal(c{1,1},cell2mat(c(i,:))))
index=i;
end
end
  2 件のコメント
Adam Danz
Adam Danz 2019 年 8 月 28 日
If the idea is to return the row index of c that matches c{1,1}, here is an alternative.
% This line returns the logical index
index = cellfun(@(x)isequal([x{:}],c{1,1}),mat2cell(c,ones(size(c,1),1),2));
% This line returns the linear index (matching your for-loop)
index = find(cellfun(@(x)isequal([x{:}],c{1,1}),mat2cell(c,ones(size(c,1),1),2)));
MA
MA 2019 年 8 月 28 日
Thanks alot. It really helps

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

その他の回答 (1 件)

Luna
Luna 2019 年 8 月 28 日
Maybe you can try this piece of code:
cellSizes = cellfun('prodofsize',c);
elementIndices = [];
elementValues = [];
for i = 1:numel(cellSizes)
for j = 1:cellSizes(i)
tempVar = c{i}(j);
elementValues = [elementValues,tempVar];
elementIndices = [elementIndices,find(c{i} == tempVar)];
end
end

カテゴリ

Help Center および File ExchangeResizing and Reshaping Matrices についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by