How to randomly change element of matrix?

조회 수: 51 (최근 30일)
Ammy
Ammy 2021년 9월 14일
댓글: Ammy 2021년 9월 14일
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

채택된 답변

the cyclist
the cyclist 2021년 9월 14일
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
the cyclist
the cyclist 2021년 9월 14일
% 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?)
Mnew = M;
Mnew(rndIdx) = randi(1000)
% Put save step here, if you want to save each one
end
Mnew = 3×3
8 1 6 3 5 906 4 9 2
Mnew = 3×3
8 1 6 914 5 7 4 9 2
Ammy
Ammy 2021년 9월 14일
Thank you very much.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Fabio Freschi
Fabio Freschi 2021년 9월 14일
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
  댓글 수: 2
Jan
Jan 2021년 9월 14일
Or randi(1000) instead if rand().
Ammy
Ammy 2021년 9월 14일
Thank you very much.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by