I am facing a problem with ismember subfunciton in Matlab.

1 回表示 (過去 30 日間)
Sainath
Sainath 2017 年 3 月 6 日
コメント済み: Guillaume 2017 年 3 月 6 日
I am facing a problem with ismember subfunciton in Matlab.
UseCase:
Simulation_Time_Vecort = 0:0.01:42;
TestVector =
0 1.0000
0.7000 0
0.8000 1.0000
7.3100 0
7.4100 1.0000
13.6200 1.0000
20.3200 1.0000
27.0200 1.0000
33.0200 1.0000
39.9200 1.0000
Simulation_Values_Vecort = zeros(1,length(Simulation_Time_Vecort));
FlagSignalName_Value = [Simulation_Values_Vecort ; Simulation_Values_Vecort]';
FlagSignalName_Value(:,1) = double(Simulation_Time_Vecort);
FlagSignalName_Value(:,2) = ismember(Simulation_Time_Vecort,TestVector_Data(:,1)');
Problem: When I try to excute this script, ismember is not executed as expected. For some cases though the value exist in both vectors used in ismember function states above, output is not displayed or updated as value 1. In my case for value ‘0.7000’ ismember result is displayed as 0

回答 (1 件)

Walter Roberson
Walter Roberson 2017 年 3 月 6 日
If you have a new enough MATLAB version, use ismembertol
  5 件のコメント
Stephen23
Stephen23 2017 年 3 月 6 日
編集済み: Stephen23 2017 年 3 月 6 日
Surely a tolerance is the only robust solution. For example (I used this round2sf):
>> A = 0.996;
>> B = 0.994;
>> round2sf(A,2)
ans = 1.0000
>> round2sf(B,2)
ans = 0.99000
The values differ by only 0.002, but rounding to 2 sigfig will make them diverge, not converge. Using a tolerance would resolve this. All pairs of values that differ by a little less than least significant figure and that are on the rounding boundary will diverge...
Guillaume
Guillaume 2017 年 3 月 6 日
Ah yes, but your values differ on the 3rd significant digit. From the example data provided, I'm assuming that the values only differ by a few eps.
Yes, tolerance comparison is more robust. My suggestion was for if you don't have ismembertol.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeOperators and Elementary Operations についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by