Допустим, у меня есть две матрицы A и x:
A=[10,10;
20,20;
30,30;
NaN,NaN
NaN,NaN];
x=[10,9;
32,25;
19,21;
11,10;
NaN,NaN];
Я хочу сравнить обе матрицы и найти строки x, которые соответствуют любой строке A в пределах определенного допуска + -0,01 (= + - 10%).Таким образом, в этом случае:
Строка 1 из x соответствует строке (строке 1) в A, которая находится в пределах допуска.
Строка 2 из x почти соответствует строке (строке 2) в A, но он находится за пределами + - 10%.
Строка 3 из x соответствует строке (строке 2) в A, которая находится в пределах допуска.
Строка 4 из x соответствует строке (снова строка 1) в пределах A в пределах допуска.
Строка 5 из x может игнорироваться (только NaN).
Гарантируется, что A и x имеют одинаковый размер и количество элементов.Однако строки расположены не по порядку, поэтому я не могу сравнить строку за строкой.Я просто хочу знать, соответствует ли строка в x ЛЮБОЙ строке в A, и если да, я бы хотел сохранить индекс этой строки.Поэтому в моем случае я бы предпочел иметь выходной (логический) вектор, такой как:
v=[1,0,1,1,0]; % Logical vector with matching rows of x
id=find(v==1); % Result is [1,3,4], finds the indices
Я пробовал различные комбинации
ismembertol(A,x,0.1) % and ismembertol(A,x,0.1,'ByRows',true)
, используя 'find', 'any'«все», но я не могу найти решение.