Iterating through 2 Arrays and Performing a Calculation
Show older comments
A1 = [5 10 15 20 25 30 35 40]
A2 = [ 7 22 38]
Goal: Iterate through A2 and subtract from appropriate value in A1, store this value in a separate array.
Example:
7 in A2 is between 10 and 5 where
t1= 5
t2 = 10
Subtract A2 from t1.
7-5 = 2 (store this value in a separte array.
Move on to the second element in A2, 22. 22 is between 20 and 25. Substract (22-20) = 2; store this value
4 Comments
Sindar
on 6 Mar 2020
Is A1 always evenly spaced? Is it always sorted? Will A2 ever have elements greater than all elements in A1?
Graduate Student
on 6 Mar 2020
Graduate Student
on 6 Mar 2020
Answers (1)
Sindar
on 6 Mar 2020
loop version:
for ind=1:length(A2)
idx = find(A1 < A2(ind),1,'last');
A3(ind) = A2(ind) - A1(idx);
end
Another (probably much worse) way of looking at it for smallish arrays:
A1 = [3 10 15 20 25 30 35 40];
A2 = [ 7 22 38];
% create a matrix of all combinations of A1(i)-A2(j)
tmp = A2-A1';
% set any less than zero to infinity
tmp(tmp<0)=Inf;
% find the minimum for each column
A3 = min(tmp)
Categories
Find more on Matrices and Arrays in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!