How to write this simple script correctly?
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
Risposta accettata
Più risposte (1)
Star Strider
il 11 Ago 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 Commenti
Vedere anche
Categorie
Scopri di più su Matrix Indexing in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!