find row and column of a value in cell array

4 Ansichten (letzte 30 Tage)
NA
NA am 11 Apr. 2020
Bearbeitet: NA am 11 Apr. 2020
I have A matrix of dimension 10*10. C is linear index of non zero element in A
C = {[11],[33;44;54;55],[77;87;98]};
I want to find row and column of linear index in cell array.
result should be
row_col = {[1,2],[3,4; 4,5; 4,6; 5,6],[7,8;7,9;8,10]}

Akzeptierte Antwort

Ameer Hamza
Ameer Hamza am 11 Apr. 2020
Bearbeitet: Ameer Hamza am 11 Apr. 2020
C = {[11],[43;54;63;64],[87;97;108]};
A = rand(10);
result = cellfun(@(x) {ind2sub2(size(A), x)}, C);
function y = ind2sub2(sz, ind)
[r,c] = ind2sub(sz, ind);
y = [r(:) c(:)];
end
Result:
>> result{1}
ans =
1 2
>> result{2}
ans =
3 5
4 6
3 7
4 7
>> result{3}
ans =
7 9
7 10
8 11

Weitere Antworten (1)

David Hill
David Hill am 11 Apr. 2020
Your example does not get the correct result.
Size_A =[10 10];
row_col = cell([],1);
for i=1:length(C)
[rows,cols] = ind2sub(Size_A,C{i}(:));
row_col{i} = [rows,cols];
end

Kategorien

Mehr zu Creating and Concatenating Matrices 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!

Translated by