As I understand the code, the fact that ls is empty after the loop implies that either:
- The while loop body never executes
- The if body never executes; or
- z is empty in the assignment ls = [ls z];
You haven't shown us how the values of x or i or Nfft get set, so we can only make educated guesses about the specific cause.
I suggest that you single-step through the code using the debugger. At each line, check the values of the key variables and make sure that each one contains what you think it should.