How can I convert 2 column matrix to a cell array?
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Jay Vaidya
le 30 Déc 2019
Modifié(e) : Jay Vaidya
le 1 Jan 2020
Is there a convenient way to convert a 2 column matrix into a cell array (without using nested for loops if possible)?
The matrix looks like:
Can I make a matrix from the above matrix such that the rows and columns of the new matrix(or a cell array you can say) will be like you see below:
the empty cells can be NAN and the filled cells are the values of the 3rd column of the old matrix.
0 commentaires
Réponse acceptée
Walter Roberson
le 30 Déc 2019
result = accumarray(matrix(:,[2 1]), matrix(:,3), [], @(v) {v}, {nan})
However I wonder if you would be better off using
result = sparse(matrix(:,2), matrix(:,1), matrix(:,3))
which would be a sparse numeric array instead of a cell array that takes up about 108 bytes per entry.
3 commentaires
Andrei Bobrov
le 30 Déc 2019
[i,g] = findgroups(matrix(:,2));
out = flip(accumarray([matrix(:,1),i],matrix(:,3)),1);
Plus de réponses (2)
Andrei Bobrov
le 31 Déc 2019
T = readtable('path\to\your\xls\file\matrix.xlsx','ReadVariableNames',0);
T.Var3 = str2double(T.Var3);
T = T(any(T{:,1:2} ~= 0,2),:);
M = T{:,:};
[i,g] = findgroups(M(:,2));
out = flip(accumarray([M(:,1),i],M(:,3)),1);
3 commentaires
Andrei Bobrov
le 31 Déc 2019
T = readtable('C:\Octavework\forums\xls\matrix_v2.xlsx','Range','A:C','ReadVariableNames',0);
T.Var3 = str2double(T.Var3);
T = T(any(T{:,1:2} ~= 0,2),:);
M = T{:,:};
i = findgroups(M(:,2));
out = flip(accumarray([M(:,1),i],M(:,3)),1);
Voir également
Catégories
En savoir plus sur Data Distribution Plots 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!