Borrar filtros
Borrar filtros

I will appreciate any suggestion on this simple code. I want to substitute the elements of x >5 with 6 and x<5 with zero.

1 visualización (últimos 30 días)
for j=1:1:8
x=[1 2 3 4 5 6 7 8];
if x(j)>5
x(j)=subs(x(j),x(j),6);
else
x(j)=subs(x(j),x(j),0);
end
end

Respuesta aceptada

Azzi Abdelmalek
Azzi Abdelmalek el 15 de Ag. de 2015
idx=x>5
x(idx)=6
x(~idx)=0
  4 comentarios
Isaac
Isaac el 15 de Ag. de 2015
In the event when I have two conditions to satisfy, please assist:
for j=1:1:8 x=[1 2 3 4 5 6 7 8]; y(j)=x(j).^2; idx=(x>pi&&x<7); idy=y<2; y(idy)=0; y(idx)=90; end
Steven Lord
Steven Lord el 16 de Ag. de 2015
Don't define x inside your loop. It's unnecessary and is just going to waste time.
Don't use a loop; vectorize your code as Azzi suggested.
&& is intended to short-circuit when the two criteria you're trying to AND together evaluate to a scalar value. In this case, your criteria do not evaluate to scalar values. In that case, use & to perform elementwise AND.

Iniciar sesión para comentar.

Más respuestas (1)

matico
matico el 16 de Ag. de 2015
Also:
x=[1 2 3 4 5 6 7 8];
x(x>5) = 6;
x(x<=5) = 0;

Categorías

Más información sobre Entering Commands en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by