How to find unique value in serial order??

1 view (last 30 days)
I have a matrix
p = [90 90 -45 0 0 45 45 0 -45];
i want unique values in serial order from right side
q = [90 -45 0 45 0 -45];
Means from right side first value is -45, second is 0, third is 45...etc
I want repeated unique number according to serial from RHS.
Means sort repeated values.

Accepted Answer

the cyclist
the cyclist on 26 Jan 2016
Edited: the cyclist on 26 Jan 2016
Does this do what you want?
p = [90 90 -45 0 0 45 45 0 -45];
idx = [true diff(p)~=0];
q = p(idx);
If not, can you give another example or two that illustrates the rule?
  2 Comments
Triveni
Triveni on 26 Jan 2016
The Cyclist Sir,
I have inserted an image. Here every p(9) values are interchange/swap by q(length(q-1)); and store & store temporary copy to c(:,:,1). then p(9) or c(1,9,1) interchange/swap by q(length(q-2)); and save temporary copy to c(:,:,2). then p(9) or c(1,9,2) interchange/swap by q(length(q-3)); and save temporary copy to c(:,:,3). and so on. can you make a program for me. I'll be very thankful to you.
the cyclist
the cyclist on 26 Jan 2016
Is this a homework problem? If so, can you show some work that you tried yourself?
You can see my comment on Walter's solution, to see the way to get q.

Sign in to comment.

More Answers (1)

Walter Roberson
Walter Roberson on 26 Jan 2016
q = p;
q(1+find(q(1:end-1)==q(2:end))) = [];
  2 Comments
Triveni
Triveni on 26 Jan 2016
Thanks walter Sir, Actually i seen late...please solve my another query....can i find positions of matrix q according to p from RHS. means q= [90 -45 0 45 0 -45] & layer location according to p is [2 3 5 7 8 9]
the cyclist
the cyclist on 26 Jan 2016
p = [90 90 -45 0 0 45 45 0 -45];
pLR = fliplr(p);
idxLR = [true diff(pLR)~=0];
locationsLR = find(fliplr(idxLR))

Sign in to comment.

Tags

Products

Community Treasure Hunt

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

Start Hunting!