Is there a way to change a vector range by condition?

2 vues (au cours des 30 derniers jours)
maxmathlab
maxmathlab le 12 Oct 2016
Modifié(e) : Andrei Bobrov le 12 Oct 2016
Hallo,
i use a simple example for my problem:
i have a vector
x=[-10:10];
x=x';
Now i want to change values of the range 5:15 which are positive. i tried something like this:
x(5:15 & x>0,1)=100
x( (5:15) & (x>0) ,1)=100
x(5:15,1)&x>0=100
x(x(5:15)<0,1)=100
nothing seems to work. pls help.

Réponse acceptée

Andrei Bobrov
Andrei Bobrov le 12 Oct 2016
Modifié(e) : Andrei Bobrov le 12 Oct 2016
x=(-10:10)';
z = x(5:15);
z(z>0) = 100;
x(5:15) = z;
or
x=(-10:10)';
b = false(size(x));
b(5:15) = true;
x(b & x > 0) = 100;
or in one row
x(intersect(find(x>0),5:15)) = 100;
  1 commentaire
maxmathlab
maxmathlab le 12 Oct 2016
thanks. not a one row command but this is what I needed.

Connectez-vous pour commenter.

Plus de réponses (1)

KSSV
KSSV le 12 Oct 2016
If you want to change values at known indices use:
x(5:15)=100;
If you want to change values according to the values of x use:
x(x>1)=100;
x(x>1 & x<2)=100;
  1 commentaire
maxmathlab
maxmathlab le 12 Oct 2016
Modifié(e) : maxmathlab le 12 Oct 2016
i know matlab this far. but how do i combind it?
for e.g.: if i want to change my vector x from x(5) to x(15) but also only negativ values, what would the command look like?

Connectez-vous pour commenter.

Catégories

En savoir plus sur Logical 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!

Translated by