find all elements (cells) of a single element (cell) in cell array
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Adam Danz
am 28 Aug. 2019
I see. So you want to return the row index of C that, when horizontally concatented, equals the vector in C{1,1}.
Akzeptierte Antwort
MA
am 28 Aug. 2019
2 Kommentare
Adam Danz
am 28 Aug. 2019
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)));
Weitere Antworten (1)
Luna
am 28 Aug. 2019
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
0 Kommentare
Siehe auch
Kategorien
Mehr zu Array Geometries and Analysis finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!