フィルターのクリア

how to compare each elemnets in two cell with error tolerance?

1 回表示 (過去 30 日間)
Rishi Kiran Shankar
Rishi Kiran Shankar 2019 年 7 月 3 日
編集済み: Stephen23 2019 年 7 月 3 日
Hi,
I have 1xn cells. Each cell many be of any size. I have to compare each element in (1x1 cell) with the next cell till ('1xn-1' cell) to ('1xn' cell). I cannot use 'ismember' function because, while comparing the elements, the error tolerence can be plus or minus 5%.
For eg,
a{1} = 1 2 3 a{2} = 1.05 5 1.9
The first elment in a{1} and a{2} is a match & second element in a{1} and third element in a{2} is a match.
Can anyone suggest me any idea?
Thanks in advance.
  2 件のコメント
Stephen23
Stephen23 2019 年 7 月 3 日
"the error tolerence can be plus or minus 5%"
According to your examples the tolerance is atleast 20%:
>> 1*1.2
ans = 1.2
>> 2*1.2
ans = 2.4
Rishi Kiran Shankar
Rishi Kiran Shankar 2019 年 7 月 3 日
Hi,
I have corrected the mistake you pointed out. Thanks.

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

採用された回答

Stephen23
Stephen23 2019 年 7 月 3 日
編集済み: Stephen23 2019 年 7 月 3 日
>> A = {[1,2,3],[1.2,5,2.4]};
>> M = bsxfun(@rdivide,A{2},A{1}.');
>> [A1,A2] = find(abs(M-1)<=0.2) % 20%
A1 =
1
2
A2 =
1
3
EDIT: new 5% data:
>> A = {[1,2,3],[1.05,5,1.9]};
>> M = bsxfun(@rdivide,A{2},A{1}.');
>> [A1,A2] = find(abs(M-1)<=0.051) % 5% (and allow for floating point error)
A1 =
1
2
A2 =
1
3

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMatrices and Arrays についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by