Replace certain elements in an array

1 Ansicht (letzte 30 Tage)
MK96
MK96 am 11 Feb. 2017
Kommentiert: MK96 am 11 Feb. 2017
The following code generates a 100x1 array of random 1s and -1s:
N = 100;
States = 2*randi(2,N,1) - 3;
Once generated, is there an easy way I can change some of the -1s to 1s whilst keeping the other elements the same?
e.g. for a 4x1 example if I had [1; -1; -1; -1] and wanted to change any 2 of the -1 elements to 1s: [1; -1; 1; 1], how could I do this?

Akzeptierte Antwort

Image Analyst
Image Analyst am 11 Feb. 2017
Try this:
N = 10; % Number of elements.
States = 2*randi(2,N,1) - 3
% Get the minus 1 element indexes
minusOneIndexes = find(States == -1)
% Get two random indexes:
indexes = randperm(length(minusOneIndexes), 2);
% Set them to +1
indexesToChange = minusOneIndexes(indexes)
States(indexesToChange) = 1

Weitere Antworten (0)

Kategorien

Mehr zu Matrices and Arrays finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by