How can i make the sum of matrix elements>0 under the condition that there are min 3 zeros between the sums?

1 vue (au cours des 30 derniers jours)
I hava a matrix: a=[2 3 0 0 4; 0 0 0 0 0; 0 5 3 0 4; 14 4 0 1 1; 0 0 0 0 0; 0 0 0 7 9; 0 0 0 0 0; 0 0 0 0 0; 9 6 0 0 1; 1 1 1 0 0];
How can i make the sum of elements>3, under the condition that there are at least 3 zeros between the last element of one and the first element of the next sum?
Output should be: E=[9 32 16 19]
thanks!

Réponse acceptée

Azzi Abdelmalek
Azzi Abdelmalek le 23 Avr 2016
Modifié(e) : Azzi Abdelmalek le 23 Avr 2016
a=[2 3 0 0 4; 0 0 0 0 0; 0 5 3 0 4; 14 4 0 1 1; 0 0 0 0 0; 0 0 0 7 9; 0 0 0 0 0; 0 0 0 0 0; 9 6 0 0 1; 1 1 1 0 0]
b=reshape(a',1,[]);
id=~b;
ii=strfind(id,[1 1 1 0])+2;
ii=[0 ii numel(b)];
for k=1:numel(ii)-1
out(k)=sum(b(ii(k)+1:ii(k+1)));
end
out
  10 commentaires
hdiba
hdiba le 24 Avr 2016
but the sums are not row sums. this was just an assumption you've done in the comment above.
hdiba
hdiba le 4 Mai 2016
is there any way to get the number of elements in a sum? maybe somehow with the difference between the end position and beginning position of the sum? in our example for sum 9=2+3+0+0+4, there are 5 summands

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Resizing and Reshaping Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by