How to randomly change element of matrix?

69 views (last 30 days)
I have an n×n matrix.
I want to randomly change the element of A at random position.
The element of matrix can be from 0 to 1000
I used randi(1000) for random entry
I want to repeat this process 100 times to get 100 new matrices and save all these matrices in a separate folder
for i= 1:I00

Accepted Answer

the cyclist
the cyclist on 14 Sep 2021
I'll illustrate for an nxn where n = 3, and repeat 2 times:
% Set the random number generator seed, for repeatability here
rng default
% Size of matrix
n = 3;
% Starting matrix -- use your real data instead
M = magic(n);
% Loop two times
for ii = 1:2
% Chose random element index (using linear index)
rndIdx = randi(n*n);
% Change the random element to a random value from 1:1000 (which I guess is what you want?)
M(rndIdx) = randi(1000)
% Put save step here, if you want to save each one
end
M = 3×3
8 1 6 3 5 906 4 9 2
M = 3×3
8 1 6 914 5 906 4 9 2
This code keep going forward from the original matrix, changing elements one at a time (but sometimes it could overwrite the same location more than once). You'll need to adjust the code if you want to start from M, save, start from original M again, etc.
But hopefully you get the idea.
  3 Comments

Sign in to comment.

More Answers (1)

Fabio Freschi
Fabio Freschi on 14 Sep 2021
You can use linear indexing
% your matrix
A = rand(10,100);
% create the folder
mkdir('storage');
% loop
for i = 1:100
% random matrix
Arand(randi(numel(A))) = rand;
% save
save(strcat('./storage/mymatrix',num2str(i),'.mat'));
end

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!