find row and column of a value in cell array

3 vues (au cours des 30 derniers jours)
NA
NA le 11 Avr 2020
Modifié(e) : NA le 11 Avr 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]}

Réponse acceptée

Ameer Hamza
Ameer Hamza le 11 Avr 2020
Modifié(e) : Ameer Hamza le 11 Avr 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

Plus de réponses (1)

David Hill
David Hill le 11 Avr 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

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by