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

1 Ansicht (letzte 30 Tage)
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!

Akzeptierte Antwort

Azzi Abdelmalek
Azzi Abdelmalek am 23 Apr. 2016
Bearbeitet: Azzi Abdelmalek am 23 Apr. 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 Kommentare
hdiba
hdiba am 24 Apr. 2016
but the sums are not row sums. this was just an assumption you've done in the comment above.
hdiba
hdiba am 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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Resizing and Reshaping Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by