How can I replace random elements of a matrix with some definite respective values in a single line command?
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponses (2)
Star Strider
le 23 Sep 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 commentaires
Voss
le 23 Sep 2023
Modifié(e) : Voss
le 23 Sep 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 commentaires
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!