Find an array element's index

2 Ansichten (letzte 30 Tage)
A VP
A VP am 2 Okt. 2017
Kommentiert: Image Analyst am 5 Okt. 2017
I have a first array that has about 5000 values. I have a second array that is (first array - (0.3)*(first array(1))); For every element in the first array, I must find the value and index of the closest element in the second array. Any help is highly appreciated.
  1 Kommentar
Jan
Jan am 2 Okt. 2017
What have you tried so far? Is this a homework? Did you search in the forum already?

Melden Sie sich an, um zu kommentieren.

Antworten (2)

Image Analyst
Image Analyst am 2 Okt. 2017
Did you try the obvious min() function????
[closestValue, indexOfClosestValue] = min(abs(array1-array2));
Make sure array1 and array2 are not uint8 or uint16 though. Cast to double first, if you're using one of them.

A VP
A VP am 5 Okt. 2017
What I have currently is this :
temp = zeros(1,length(x));
min_val = zeros(1,length(x));
index = zeros(1,length(x));
y = x- (0.3)*(x(1));
for i=1:length(x)
for j = 1 : length(x)
temp(j) = abs(y(i)-x(j));
if j == length(x)
[min_val(i), index(i)] = min(temp);
end
end
end
x is the initial array, y is the final array. y is an array formed by subtracting 30% of the first value of x from each element of x. I should be able to find the closest match of y in x and find its index in x. This logic works well for a smaller array, but the nested for loop takes forever for an array with large number of values. I have arrays with 6-digit numbers. Is there a quicker way of doing this?
  1 Kommentar
Image Analyst
Image Analyst am 5 Okt. 2017
But your temp is always a constant. Since y = x-constant, then y-x is x-(x-constant) which equals the constant. So it's the same everywhere. All elements have the same value, which is 0.3*x(1).

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by