Am trying to reduce a vector by summing some elements in the vector to form another vecter

1 vue (au cours des 30 derniers jours)
example if v=[40,34,10,8,6,2] then the new vector will make 40 to be the reference point. after comparing each element the new vector will be N=[40,34,26]
  6 commentaires
Walter Roberson
Walter Roberson le 15 Nov 2017
I suspect this is a case where a loop would be the easiest.

Connectez-vous pour commenter.

Réponse acceptée

Andrei Bobrov
Andrei Bobrov le 15 Nov 2017
Modifié(e) : Andrei Bobrov le 15 Nov 2017
b = cumsum(hankel(v));
k = max(b .* (b <= 40));
N = k(cumsum(k) <= b(end,1));
or
t = cumsum(hankel(v));
t = max(t.*(t <= 40));
N = t(cumsum(t) <= sum(v));
  2 commentaires
Bashir Yusuf Bichi
Bashir Yusuf Bichi le 16 Nov 2017
pls if I have a vector a=[30.85,4.11,6.17,2.51,2.28]; b=sum(a)/numel(a); I want to find the closes value to the average b and its indices, what will I do?
Andrei Bobrov
Andrei Bobrov le 16 Nov 2017
a=[30.85,4.11,6.17,2.51,2.28];
b = mean(a);
t = a < b;
vals = a(t);
indices = find(t);

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by