find nonzero-middle point of an array

Asked by Tiger about 14 hours ago
Latest activity Commented on by Azzi Abdelmalek about 9 hours ago

Hello,

example

a=[0,0,3,4,5];

I want a function that give me middle point of nonzero element which is 4

not 3 which is the middle point of the array.

Thank you!

0 Comments

Tiger

Products

No products are associated with this question.

2 Answers

Answer by Azzi Abdelmalek about 13 hours ago
Accepted answer
idx=find(a);
out=a(idx(round(numel(idx)/2)))

0 Comments

Azzi Abdelmalek
Answer by Walter Roberson about 12 hours ago
 t = nonzeros(a);
 t(ceil(end/2))

floor() cannot be used instead of ceil(): if there was only 1 non-zero element, end would be 1, end/2 would be 1/2, floor(1/2) would be 0, and there is no element #0.

4 Comments

Jan Simon about 11 hours ago

@Tiger: You can vote for Walter's answer, if it helps you. And you can ask Azzi to delete his answer and resubmit it. Then the status of acceptance is cleared and you can choose again.

Walter Roberson about 9 hours ago

Azzi's answer will work, as round() of an integer is the integer itself and round() of (integer + 1/2) is the next integer: this is the same set of results as ceil() of the integer and of (integer + 1/2)

Azzi Abdelmalek about 9 hours ago

If someone asks me to delete my answer, I do not think I will do it.

Walter Roberson

Contact us