How can I replace random elements of a matrix with some definite respective values in a single line command?
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I can replace a single element of a matrix. Or change multiple elements in an arithmetic series like 1st, 3rd, 5th element of a matrix with respective numbers. Or even a range of elements like 1st to 5th. But I want to randomly replace some elements with some numbers by one single line command. Like 1st, 2nd, 5th, 8th, 9th, 11th element of a matrix. Is it possible to do that with a single line code?
A=[1 2 3;4 5 6;7 8 9]
A(1)=10
A(2)=11
A(3)=12
Or
A(1:5)=[10, 11, 12, 13, 14]
A(1:2:5)=[10, 11, 12]
But don't know how to do the last thing I mentioned. Looking for help.
2 comentarios
Dyuman Joshi
el 23 de Sept. de 2023
"But I want to randomly replace some elements with some numbers by one single line command. Is it possible to do that with a single line code?"
If I understand you correctly, it is -
A = magic(5)
A([1 8 13 22]) = [-4 -2 0 69]
Respuestas (2)
Star Strider
el 23 de Sept. de 2023
You are using ‘’inear indexing, and that will definitely work, although I am not certain what you want to do.
For a full explanation, see Matrix Indexing and the sub2ind and ind2sub functions to understand how they work and what they do.
A=[1 2 3;4 5 6;7 8 9]
A(1)=10
A(2)=11
A(3)=12
A=[1 2 3;4 5 6;7 8 9]
A(1:6)=[10, 11, 12, 13, 14, 15]
A=[1 2 3;4 5 6;7 8 9]
A(1:2:5)=[10, 11, 12]
.
0 comentarios
Voss
el 23 de Sept. de 2023
Editada: Voss
el 23 de Sept. de 2023
"I want to randomly replace some elements with some numbers by one single line command"
A=[1 2 3;4 5 6;7 8 9];
n = 6; % number of elements to replace
idx = randperm(numel(A),n) % indices of elements to be replaced with new values
val = rand(1,n) % new values
A(idx) = val % perform the replacement
A=[1 2 3;4 5 6;7 8 9];
% one-line version:
A(randperm(numel(A),6)) = rand(1,6);
2 comentarios
Dyuman Joshi
el 23 de Sept. de 2023
Modify this
idx = randperm(numel(A));
idx = idx(1:n);
to -
idx = randperm(numel(A),n);
and eliminate subsref() and substruct()
A(randperm(numel(A),n)) = rand(1,6);
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!