I need some help with the following code:
if x(:,3)>x(:,4)
output=[x(:,1)-x(:,2)];
elseif x(:,3)<x(:,4)
output=[x(:,2)-x(:,1)];
else
output=NaN
end
Here is a sample data:
matrix x output
10 5 1 2 -5
10 5 2 1 5
NaN 1 1 3 NaN
I'm not sure how to make the code work. It just takes the first argument and ignores the else if and else arguments. Please help. Thank you.
if x(:,3)>x(:,4)
doesn't really work, if
expects either true
or false
not a vector. So it only evaluates the first element of the vector x(:,3)>x(:,4)
which is why it appears to ignore your elseif
.
So you must either use a loop or even better you can use logical indexing like this:
x= [10 5 1 2
10 5 2 1
NaN 1 1 3]
output = NaN(size(x,1),1)
I = x(:,3)>x(:,4);
output(I) = x(I,1)-x(I,2);
I = x(:,3)<x(:,4);
output(I) = x(I,2)-x(I,1)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With