how to find the index of the row

2 次查看(过去 30 天)
Hi,
I want to get the row number in the following case. Say one has a 5 by 1 vector [1;2;3;4;5].
If I have the scalar '4.5' (which is not in that vector) then I know that 4.5 is between 4 and 5. What I want is to compare 4.5 with all the numbers in the vector. Then Matlab should be able to tell that 4.5 is between 4 and 5. My goal is to get the row number of the scalar '4'.
Consequently, if I have a scalar '3.5' then Matlab should be able to tell that 3.5 is between 3 and 4, and in this case I would like to obtain the row number of the scalar '3'
I just do not know how I could code this in Matlab.
Many thanks

采纳的回答

James Tursa
James Tursa 2016-7-7
编辑:James Tursa 2016-7-7
If you are looking for the closest value:
x = your vector
s = your scalar
[~,row] = min(abs(x-s));
If you are looking for the first number <= your scalar and x is sorted increasing:
row = find((x-s) >= 0,1);
If something else, please specify.
  3 个评论
James Tursa
James Tursa 2016-7-7
编辑:James Tursa 2016-7-7
Does the posted code ( row and row+1 ) do what you want? Or Azzi's or Andrei's Answers?
Imner Renmi
Imner Renmi 2016-7-7
编辑:Imner Renmi 2016-7-7
Yes, The first code does seem to do what I want. If something strange occurs I'll just post a new question. Thanks a lot for your help.

请先登录,再进行评论。

更多回答(2 个)

Azzi Abdelmalek
Azzi Abdelmalek 2016-7-7
编辑:Azzi Abdelmalek 2016-7-7
v=[8;6;1;2;3;7;5;4]
m=3.5
mv=[m ;v]
[ii,jj]=sort(mv)
idx=find(jj==1)
% m is between a1 and a2,
idx1=jj(idx-1)
idx2=jj(idx+1)
a1=mv(idx1)
a2=mv(idx2)

Andrei Bobrov
Andrei Bobrov 2016-7-7
p = [1;2;3;4;5]
z = [3.5,4.5]
[~,out] = histc(z,p)

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by