Vectorization of a for loop

1 visualización (últimos 30 días)
Nicholas Xiao
Nicholas Xiao el 27 de Nov. de 2019
Editada: Nicholas Xiao el 3 de Dic. de 2019
Hi, I am currently having difficulty with vectorizing a for loop. The purpose of the the loop is to iterate through column vector A and output 1 to empty column vector B if the element in A is greater than some scalar, and 0 otherwise. So far I have:
count = 1;
for len = 2:length(filteredArray) + 1
if filteredArray(count) > inputScalar
tempVector(count) = 1;
count = count + 1;
elseif filteredArray(count) <= inputScalar
tempVector(count) = 0;
count = count + 1;
end
end
This works fine, but I have no idea how to vectorize it for better efficiency. I thought about
x = filteredArray(1):1:length(filteredArray) + 1;
tempVector(x) = (filteredArray(x) > inputScalar);
But I don't know how to work in the other condition and the outputs into a new vector. Help would be appreciated and thank you.

Respuesta aceptada

Bhaskar R
Bhaskar R el 27 de Nov. de 2019
Editada: Bhaskar R el 27 de Nov. de 2019
% assuming fake data
filteredArray = [8 3 5 6 10 5 10 4 8 7];
inputScalar = 5;
% then apply
tempVector = filteredArray > inputScalar; % this do your requirement
For more info on Array Comparison with Relational Operators read help
  1 comentario
Nicholas Xiao
Nicholas Xiao el 27 de Nov. de 2019
Editada: Nicholas Xiao el 3 de Dic. de 2019
I understand that part, but how would I get it to also write 1 or 0 to tempVector based on whether or not filteredArray > inputScalar?
Edit: It works out automatically, thanks!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by