Below are two examples of arrays I have, with some given length:For some value z, I want to find the column the value is in. MATLAB code I wrote:if z == 1   column = ceil(length/2);   elseif logical(mod(z,2))   column = length - (z-3)/2;else   column = z/2;endIt is correct I think. But ugly and possibly slow. Is there a one-liner in MATLAB that can do this?
Locate a number in an array with ascending even and descending odd entries
matlab
Let's call the array x:x = 2 4 6 8 1 9 7 5 3I'm assuming you don't have the array stored in a variable (in which case this question boils down do: find(x==z)), and that you don't need the array either (in which case this question is really: How do I create x?).First off:Don't use length as a variable name. length is a builtin function, and overloading it is a bad idea. Although it's better to use the builtin numel instead of length, overloading length is not a good idea. It might cause all sorts of strange bugs. Choose another variable name (I'll use len, you might use something else).x has a fairly straight forward setup, and can be created quite simply using concatenation and the colon operator.x = [2:2:len, 1, fliplr(3:2:len)]If you can guarantee that len is odd then it's simply:x = [2:2:len, 1, len:-2:3]Now, you have x, and you know z. The only thing remaining is a simple call to find:col = find(x==z);