# index error for find function

2 views (last 30 days)

Show older comments

I am trying to find the value of Signal_fft_hilbert at the values of newf. But i get the error:

??? Attempted to access Signal_fft_hilbert(14.6484); index must be a positive integer or logical.

I want to find the value at exactly 14.6484. How can I find the value?

newf=aa1(:)'

for s=1:length(newf)

ppks=find(Signal_fft_hilbert(newf(s)))

end

##### 1 Comment

Dishant Arora
on 6 Mar 2014

You might have to go for interpolation to get the value at non- integral coordinates.

### Accepted Answer

Iain
on 6 Mar 2014

Ok, it looks like you've got a vector "Signal_fft_hilbert", which I'm going to call "v".

If want v(14.6484). The only way you can get v(14. ... ) is if you interpolate.

doc interp1 % will tell you all about one function for interpolation.

Alternatively, if you want the v that corresponds to something having a value you could do something like:

v( time == 14.684324)

or

v(find(time > 14.00))

##### 4 Comments

Chandrasekhar
on 7 Mar 2014

hope this works replace

top1{k}=freq_s(locs(k)) with

evalin('base',['top1' num2str(k) '=freq_s(locs(k))';])

this will append the 'k' value to top1 every time and creates a new variable top1k in the workspace.

### More Answers (2)

Niklas Nylén
on 6 Mar 2014

Edited: Niklas Nylén
on 6 Mar 2014

### See Also

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!