Subtract according to the values in another column
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi everyone,
I have two columns, with the same amount of elements.
C1 = 1-1-1-1-1-2-2-2-2-2-2-3-3-3-4-4-4-4
C2 = 5-10-12-35-3-1-4-26-5-11-12-8-2-22-8-2-5-7
I would like to subtrate the values of C2 according to C1(e.g., 3-5; 12-1; 22-8; 7-8), and present the results like that:
1: -2;
2: 11
3: 14
4: -1
How can I do that?
3 commentaires
Guillaume
le 11 Juil 2019
Modifié(e) : Guillaume
le 11 Juil 2019
Like Geoff, I don't understand how the result is obtained. Pleas clarify
And, please, use valid matlab notation in your examples, so we can just copy/paste it into matlab. With the way you've written it it's difficult to know which element of C1 correspond to which element of C2
C1 = [1 1 1 1 1 2 2 2 2 2 2 3 3 3 4 4 4 4] %this is valid matlab syntax
C2 = [5 10 12 35 3 1 4 26 5 11 12 8 2 22 8 2 5 7] %We can just copy/paste that into matlab
edit: And now that I've written it in a readable way, it's clear that what you want is last-first for each index. Hence, the importance of formatting your post properly.
Réponse acceptée
Guillaume
le 11 Juil 2019
Modifié(e) : Guillaume
le 11 Juil 2019
one way:
C1 = [1 1 1 1 1 2 2 2 2 2 2 3 3 3 4 4 4 4] %this is valid matlab syntax
C2 = [5 10 12 35 3 1 4 26 5 11 12 8 2 22 8 2 5 7] %We can just copy/paste that into matlab
transitions = find(diff([-Inf, C1, Inf]) ~= 0);
result = [C1(transitions(1:end-1)); C2(transitions(2:end)-1) - C2(transitions(1:end-1))].'
edit: Note that this assumes that your grouping indices (C1) are not mixed (It wouldn't work with C1 = [1 1 1 2 2 1 1 2] for example)
0 commentaires
Voir également
Catégories
En savoir plus sur Get Started with MATLAB 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!