MATLAB: Trouble passing a vector as the input for a function

beginnerpassing into functionvector

I'm trying to take a vector as an input for a function and change all the negative values of the vector into 0's, then output the new vector.
function newX = valu(x)
for x
if (x<0)
x = x .* 2;
end
newX = x;
end
end
How would I tell Mathlab that X is a vector that will be assigned by the user (when calling the function)?

Best Answer

There are much more straightforward ways to do what you want. However, to do it in a loop, you need to index the individual elements of ‘x’, then test, and if necessary replace, the elements according to the criteria you choose. (Your current loop multiplies them by 2 rather than setting them to 0. I leave that for you to define.)
Example
for k = 1:numel(x)
if (x(k)<0)
x(k) = x(k) .* 2;
end
newX(k) = x(k);
end
Experiment to get the result you want.