필터 지우기
필터 지우기

find the position of en element if you have the increment

조회 수: 1 (최근 30일)
F.O
F.O 2017년 12월 11일
편집: F.O 2017년 12월 11일
How i will find mathematically what is the position of the element correspounding z=-2 it is 21 but I cant find it mathematically
p=[4.4 5.5 6.6 8];
h=[2 5 3 6];
x=[0:0.4:40];
z=[0:-0.1:-16]
vel=zeros(numel(z),numel(x));
vel(1:21,:)=4.4;
vel(22:71,:)=5.5;
vel(72:101,:)=6.6;
vel(102:161,:)=8;
  댓글 수: 3
Stephen23
Stephen23 2017년 12월 11일
What are p, h, and vel supposed to be used for?
F.O
F.O 2017년 12월 11일
편집: F.O 2017년 12월 11일
Hei Adam ,Actually ,sometimes I am very bad in asking and sorry for that. the thing is that every value in p corresspound to the values in h and I wanted to know how to get the position when z equals minus every value in h vector

댓글을 달려면 로그인하십시오.

채택된 답변

Stephen23
Stephen23 2017년 12월 11일
편집: Stephen23 2017년 12월 11일
You need to compare the difference against a (carefully selected) tolerance:
>> z = 0:-0.1:-16; % do not use square brackets!
>> tol = 0.00001;
>> val = -4.4;
>> idx = find(abs(z-val)<=tol)
idx = 45
>>
Read more here:

추가 답변 (1개)

James Tursa
James Tursa 2017년 12월 11일
편집: James Tursa 2017년 12월 11일
You need to be careful how you search for this element. Because of the way the colon operator works with floating point fractions, you cannot guarantee that values you think might obviously be in the vector are actually there exactly. E.g.,
>> z=[0:-0.1:-16];
>> find(z==-4.4)
ans =
45
>> num2strexact(-4.4)
ans =
-4.4000000000000003552713678800500929355621337890625
>> num2strexact(z(45))
ans =
-4.4000000000000003552713678800500929355621337890625
>> find(z==-4.1)
ans =
Empty matrix: 1-by-0
>> num2strexact(-4.1)
ans =
-4.0999999999999996447286321199499070644378662109375
>> num2strexact(z(42))
ans =
-4.10000000000000053290705182007513940334320068359375
So, for the -4.4 value the colon operator happen to pick the same "closest" IEEE double value that you get when you type the value at the command line. But this didn't happen for the -4.1 value. So to do these types of operations in your code, you need to account for this effect and either use tolerances or use some type of integer range that you know can be searched exactly.

카테고리

Help CenterFile Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

태그

제품

Community Treasure Hunt

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

Start Hunting!

Translated by