# Iterative Hard Thresholding always thresholds same indices

I am confused by the fact that the thresholded indices in IHT do not change during the recovery. I used the code from this question and also added the condition that $$\vert \vert \Phi \vert \vert_2 < 1$$ by

# Generate problem instance
A = np.random.randn(n,N)
# normalize to columns to have unit norm
A = A/(np.linalg.norm(A,2)+0.1)


Is it correct that always the same indices are kept/thresholded? For example: $$x_0 = [ 0.1923, 0, 0, -0.2234, 0 ]$$ $$x_1 = [-0.1234, 0, 0, 2.6289, 0 ]$$ $$x_2 = [ 3.9432, 0, 0, -0.0012, 0 ]$$ $$x_3 = [-1.2345, 0, 0, 0.1298, 0 ]$$ $$...$$ for any $A \in \mathbb{R}^{4 \times 5}$. If IHT will always keep the same indices being not zero, I could find the best approximation by solving a simple equation system, therefore I guess there is an error in the code, isn't it?

• Please add more details on your question . "the fact that the thresholded indices in IHT do not change during the recovery" is intrinsic of the algorithm or your implementation shows such a behavior? Which part of "this question"? Jul 11 '17 at 16:33
• It was correctly edited Jul 12 '17 at 7:33
• How were your measurements taken - e.g. did you add noise? Jul 17 '17 at 9:26
• Could you share the signals you are trying to find their representations?
– Royi
Jun 3 '19 at 4:16