sum all successive values in matrix row
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
summyia qamar
il 13 Ago 2018
Commentato: summyia qamar
il 13 Ago 2018
I have a vector A which represents 10 machines defect rate. Matrix B shows a process plan in each row in which the elements show process time of one part on corresponding machine for example; row 1 col 4 shows that this part takes 9 minutes to process on machine 4.I want to multiply each row of B with A such that every non zero element of B is multiplies by the sum of corresponding non zero elements of A. for example;
A=[0.1, 0.2, 0.2, 0.4, 0.2, 0.3, 0.1, 0.1, 0.1, 0.2]
B=[0 0 0 9 0 0 10 0 8 8;
8 0 0 0 7 9 0 0 0 10]
C=[0 0 0 (9+9*(0.4+0.1+0.1+0.2)) 0 0 (10+10*(0.1+0.1+0.2) 0 (8+8*(0.1+0.2)) 8+8*0.2;
(8+8*(0.1+0.2+0.3+0.2) 0 0 0 (7+7*(0.2+0.3+0.2) (9+9*(0.3+0.2)) 0 0 0 (10+10*(0.2))]
I tried cumsum and move sum but they are not giving the right answer.
3 Commenti
Risposta accettata
Più risposte (1)
Geoff Hayes
il 13 Ago 2018
summiya - for the seventh element, you seem to have
(10+10*(0.3+0.1+0.2)
Is the 0.3 a mistake and so should be 0.1 instead?
Regardless, if we assume that B has integers only, then we can determine the indices of the non-zero elements of the first row of B with
nonZeroElementsInB = B(1,:) ~= 0;
We can then determine the sum (from A) of these non-zero elements as
sumNonZeroElementsInA = sum(A(nonZeroElementsInB));
So this will be the sum of all the elements of A corresponding to non-zero elements in the first row of B
(0.4+0.1+0.1+0.2)
You will need to adjust this sum for those elements where you don't want to include all of these values.
Vedere anche
Categorie
Scopri di più su Resizing and Reshaping Matrices 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!