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

2 visualizzazioni (ultimi 30 giorni)
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.

Risposta accettata

Andrei Bobrov
Andrei Bobrov il 12 Ott 2016
Modificato: Andrei Bobrov il 12 Ott 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;

Più risposte (1)

KSSV
KSSV il 12 Ott 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 Commento
maxmathlab
maxmathlab il 12 Ott 2016
Modificato: maxmathlab il 12 Ott 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?

Accedi per commentare.

Community Treasure Hunt

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

Start Hunting!

Translated by