How can I convert 2 column matrix to a cell array?
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Jay Vaidya
el 30 de Dic. de 2019
Editada: Jay Vaidya
el 1 de En. de 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 comentarios
Respuesta aceptada
Walter Roberson
el 30 de Dic. de 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 comentarios
Andrei Bobrov
el 30 de Dic. de 2019
[i,g] = findgroups(matrix(:,2));
out = flip(accumarray([matrix(:,1),i],matrix(:,3)),1);
Más respuestas (2)
Andrei Bobrov
el 31 de Dic. de 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 comentarios
Andrei Bobrov
el 31 de Dic. de 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);
Ver también
Categorías
Más información sobre Data Distribution Plots en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!