# 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)
Al Naif le 23 Sep 2023
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 commentairesAfficher 1 commentaire plus ancienMasquer 1 commentaire plus ancien
Walter Roberson le 4 Oct 2023

Connectez-vous pour commenter.

### 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 = 3×3
1 2 3 4 5 6 7 8 9
A(1)=10
A = 3×3
10 2 3 4 5 6 7 8 9
A(2)=11
A = 3×3
10 2 3 11 5 6 7 8 9
A(3)=12
A = 3×3
10 2 3 11 5 6 12 8 9
A=[1 2 3;4 5 6;7 8 9]
A = 3×3
1 2 3 4 5 6 7 8 9
A(1:6)=[10, 11, 12, 13, 14, 15]
A = 3×3
10 13 3 11 14 6 12 15 9
A=[1 2 3;4 5 6;7 8 9]
A = 3×3
1 2 3 4 5 6 7 8 9
A(1:2:5)=[10, 11, 12]
A = 3×3
10 2 3 4 12 6 11 8 9
.
##### 0 commentairesAfficher -1 commentaires plus anciensMasquer -1 commentaires plus anciens

Connectez-vous pour commenter.

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
idx = 1×6
8 1 4 5 3 7
val = rand(1,n) % new values
val = 1×6
0.0840 0.0074 0.4788 0.8361 0.8203 0.0097
A(idx) = val % perform the replacement
A = 3×3
0.0074 0.4788 0.0097 4.0000 0.8361 0.0840 0.8203 8.0000 9.0000
A=[1 2 3;4 5 6;7 8 9];
% one-line version:
A(randperm(numel(A),6)) = rand(1,6);
##### 2 commentairesAfficher 1 commentaire plus ancienMasquer 1 commentaire plus ancien
Voss le 23 Sep 2023
Very good.

Connectez-vous pour commenter.

### Catégories

En savoir plus sur Descriptive Statistics dans Help Center et File Exchange

R2020a

### Community Treasure Hunt

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

Start Hunting!

Translated by