How to sum up a few numbers in sequence and save as a separate matrix
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Woonsup Choi
il 4 Dic 2015
Risposto: Image Analyst
il 4 Dic 2015
I have a matrix like [0; 0; -1; -2; -1; 0; 0; 0; -2; -1; 0]. From here I would like to sum up sequences of non-zero values and save the result in a separate matrix. From the example, the result should be [-4; -3]. How should I write the code?
Thank you.
0 Commenti
Risposta accettata
Jos (10584)
il 4 Dic 2015
Here is an algorithm:
A = [0; 0; -1; -2; -1; 0; 0; 0; -2; -1; 0] % input
B = cumsum(A)
tf = diff([A==0 ; true])==1
C = B(tf)
D = [C(1) ; diff(C)] % output
0 Commenti
Più risposte (1)
Image Analyst
il 4 Dic 2015
An alternate way using the Image Processing Toolbox:
A = [0; 0; -1; -2; -1; 0; 0; 0; -2; -1; 0] % input
measurements = regionprops(logical(A~=0), A, 'Area', 'MeanIntensity');
allAreas = [measurements.Area]
allIntensities = [measurements.MeanIntensity]
integratedValues = allAreas .* allIntensities
Of course you could combine it all into 2 lines if you wanted it more compact (but more cryptic):
measurements = regionprops(logical(A~=0), A, 'Area', 'MeanIntensity');
integratedValues = [measurements.Area] .* [measurements.MeanIntensity]
0 Commenti
Vedere anche
Categorie
Scopri di più su Annotations in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!