Replacing values based on a condition in a matrix.
22 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hi there!
I have a 2by2 matrix and am trying to replace every value in the second matrix that is greater than 20 with "on".
So basically I want something like this:
1 2
2 30
30 50
40 10
55 15
to change to this:
1 closed
2 open
30 open
40 closed
55 closed
If anyone can help that would be great! Thanks!
0 comentarios
Respuestas (1)
Kevin Phung
el 20 de Mzo. de 2019
Editada: Kevin Phung
el 20 de Mzo. de 2019
%let M be your matrix;
ind = M(:,2) > 20; %grab indices along second column where value is > 20
M = num2cell(M); % youre going to need to turn it into a cell array
M(ind,2) = {'open'}; %set those indices to open
M(~ind,2) = {'closed'}; %set indices that are not to closed
M
let me know if this helps. Also, I suggest you read about cell arrays:
3 comentarios
Walter Roberson
el 20 de Mzo. de 2019
M = [{'title for first column', 'title for second column'}; M];
Kevin Phung
el 20 de Mzo. de 2019
Happy to help!
As for adding titles to the column, Walter's comment would work.
Another option is to turn the cell matrix into a table:
ind = M(:,2) > 20; %grab indices along second column where value is > 20
M = num2cell(M); % youre going to need to turn it into a cell array
M(ind,2) = {'open'}; %set those indices to open
M(~ind,2) = {'closed'}; %set indices that are not to closed
M = table(M(:,1),M(:,2),'VariableNames',{'Name1','Name2'})
Ver también
Categorías
Más información sobre Matrix Indexing 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!