Reduce a vector to the size of another vector

8 views (last 30 days)
Noah Kilps
Noah Kilps on 6 Oct 2020
Commented: Noah Kilps on 6 Oct 2020
Hello,
I have two vectors currently. I have nonzeroDecel which is a 1x2168 double and start_1G which is a 1x7 double. I need to reduce nonzeroDecel so that for each number of start_1G, it takes the number that's closest and bigger than the number in start_1G. In the end I want nonzeroDecel to also be a 1x7. Any ideas? I have attached the variables from excel so you do not have to make up your own if you don't want to.

Accepted Answer

KSSV
KSSV on 6 Oct 2020
Edited: KSSV on 6 Oct 2020
Read about ismember, ismembertol, knsnearch.
If v is the vector and val is the value for which you want to get the closest value from v, use:
num = xlsread("matlab_question.xlsx") ;
vec = num(:,1) ;
val = num(:,2) ;
% Remove nans
val(isnan(val)) = [] ;
iwant = zeros(size(val)) ;
for i = 1:length(val)
[v,idx] = min(abs(vec-val(i))) ;
iwant(i) = vec(idx) ;
end

More Answers (0)

Community Treasure Hunt

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

Start Hunting!