# find the average of a vector with specific condition ?

3 visualizzazioni (ultimi 30 giorni)
MUKESH KUMAR il 4 Set 2018
Commentato: MUKESH KUMAR il 4 Set 2018
I had A vector
A=[1 0 0 2 3 2 3 5 0 0 0 0 1 2 1 0 0 0 0 3 4 0 0 0 0 0 0 1 2 3 2 0 0 0 0 2 0 0]
like this. Now I want a vector B having average of corresponding non-zero value, like
B(1)=average(A(1));
B(4)=average(A(4):A(8));
B(13)=average(A(13):A(15);
B(20)=average(A(20):A(21));
B(28)=average(A(28):A(31)) and so on .....rest values should be zeros.
hence
B=[1 0 0 3 0 0 0 0 0 0 0 0 1.33 0 0 0 0 0 0 3.5 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 ]
##### 5 CommentiMostra 4 commenti meno recentiNascondi 4 commenti meno recenti
jonas il 4 Set 2018
I'll give it a try in an hour if no one gave you an answer. This one is not as straight-forward as your previous questions, at least to me.

Accedi per commentare.

### Risposta accettata

jonas il 4 Set 2018
Modificato: jonas il 4 Set 2018
Credits to Guillaume for cleaning up my original code.
A=[1 0 0 2 3 2 3 5 0 0 0 0 1 2 1 0 0 0 0 3 4 0 0 0 0 0 0 1 2 3 2 0 0 0 0 2 0 0];
B=zeros(size(A));
bounds = find(diff([0, A, 0] ~= 0));
starts = bounds(1:2:end);
ends = bounds(2:2:end) - 1;
B(starts) = arrayfun(@(s, e) mean(A(s:e)), starts, ends);
##### 4 CommentiMostra 3 commenti meno recentiNascondi 3 commenti meno recenti
MUKESH KUMAR il 4 Set 2018
thanks for your support :)

Accedi per commentare.

### Categorie

Scopri di più su Database Toolbox in Help Center e File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by