Effacer les filtres
Effacer les filtres

find() isn't finding all the values in the array

6 vues (au cours des 30 derniers jours)
D F
D F le 10 Mai 2018
Réponse apportée : D F le 10 Mai 2018
Hi, I have an array (called 'delta') which has been read from excel. This array is of size 33x1. I have a second array (called 'interp_x_array') which I have created using linspace which is of size 1x2601. I want to find the indices of 'interp_x_array' for values in this array equal those in 'delta'.
There are 33 values that are indentical but when I use find(), it only output 30. I have checked these indices and they are correct, however it is missing out 3.
delta values are in a column array of [-22.2000, 14.2000, 16.7000, 19.5000, -22.4000, -15.2000, -1.4000, -6.2000, -1.8000, -73.9000, 29.4000, 3.8000, -6.0000, 22.8000, -20.1000, 32.2000, -1.1000, 1.8000, 15.5000, 51.3000, -119.0000, -71.3000, -82.3000, -21.1000, -11.7000, 16.6000, -5.3000, -37.1000, 37.0000,-2.2000, 10.8000, 3.3000, 1.4000]
if true
% interp_x_array = linspace(-130, 130, 2601);
% delta_mm = xlsread('a.xls', 1, 'F2:F35');
% delta = delta_mm * 1000;
% interp_x_array = round(interp_x_array, 1);
% delta_y_index = find(any(interp_x_array == delta));
end
  1 commentaire
D F
D F le 10 Mai 2018
I have also done this without using the any() and just using find(), it still only produces 30 values

Connectez-vous pour commenter.

Réponse acceptée

Ameer Hamza
Ameer Hamza le 10 Mai 2018
You are getting the error because of floating point error. To solve this problem use ismembertol() as follow
find(ismembertol(interp_x_array, delta))
it will return 33 elements.

Plus de réponses (2)

Akira Agata
Akira Agata le 10 Mai 2018
This is due to floating-point accuracy. For example:
>> interp_x_array(1079)
ans =
-22.2000
>> delta(1)
ans =
-22.2000
>> interp_x_array(1079) - delta(1)
ans =
-3.5527e-15
So, to find elements of delta which is in interp_x_array within tolerance, ismembertol function would be suitable, like:
[idx,loc] = ismembertol(delta,interp_x_array);

D F
D F le 10 Mai 2018
Hi both,
Thanks, they both work great

Catégories

En savoir plus sur Matrices and Arrays dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by