find the position of en element if you have the increment
1 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
更多回答(1 个)
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.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Manage Products 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!