How to write this simple script correctly?
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi I have
s=[1 0 1;0 0 0];
b=[2 3 4];
I would like to have this as a result
c=[nan 3 nan;2 3 4]
I mean replace 1 by nan and o by b.
for r= 1:3
s_ind = find(s(:,r) == 1);
s(s_ind)=nan;
m(:,r)=s
a_ind = find(s(:,r) == 0);
% I don't know how to replace for 0 from matrix b??
end
any help would be appreciated in advance.
0 commentaires
Réponse acceptée
Plus de réponses (1)
Star Strider
le 11 Août 2015
You can use logical indexing, although you need two separate steps to assign the elements of ‘b’ and ‘NaN’ to ‘c’ because you have two separate conditions.
One possibility:
s=[1 0 1;0 0 0];
b=[2; 3; 4];
mb = repmat(b', 2, 1); % Create Matrix Matching ‘s’ From ‘b’
c = s; % Create ‘c’
c(~c) = mb(~c); % Assign Elements Of ‘mb’ To Zero Elements Of ‘c’
c(c==1) = NaN; % Assign ‘NaN’ To ‘c’ = 1
0 commentaires
Voir également
Catégories
En savoir plus sur Matrix Indexing dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!