Subtract according to the values in another column
1 view (last 30 days)
Show older comments
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 Comments
Guillaume
on 11 Jul 2019
Edited: Guillaume
on 11 Jul 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.
Accepted Answer
Guillaume
on 11 Jul 2019
Edited: Guillaume
on 11 Jul 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 Comments
See Also
Categories
Find more on Get Started with MATLAB in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!