how to delete particular values in this matrix ?

13 views (last 30 days)
Arul prasath
Arul prasath on 9 Feb 2015
Commented: Arul prasath on 10 Feb 2015
[a b]=[ 0.5708 0.0755 0 0 0 0 0
0 0 161.5569 0 84.9907 35.0193 17.0669];
i don't want the values before this
" 0
0 "
and my answer should be like this..
[c d]=[ 0 0 0 0
0 84.9907 35.0193 17.0669];
  6 Comments
Arul prasath
Arul prasath on 9 Feb 2015
Michael Haderlein- sir, don't go for code just see below i given some example.
question:
c=[0.7893 0.8337 0.1479 0 0 0.1479 0.9993];
1.now i should delete the repeated values in that 'c'.
2.i should delete the values that is displayed before the zeros.
3.And finally i should delete zeros also.
Expected output:
d=[0.9993];

Sign in to comment.

Accepted Answer

Stephen
Stephen on 10 Feb 2015
To solve your (constantly changing) requirement stated in your last comment to my original answer, try this code:
allR111 = [allR11;allR21];
Y3 = true(1,size(allR111,2));
Y3(1:find(abs(allR111(1,:))<1e-6,1,'last')) = false;
Y3(1:find(abs(allR111(2,:))<1e-6,1,'last')) = false;
allR111(:,Y3)
  1 Comment
Arul prasath
Arul prasath on 10 Feb 2015
Stephen Cobeldick- really thanks sir, you helped me a lot

Sign in to comment.

More Answers (1)

Stephen
Stephen on 9 Feb 2015
Edited: Stephen on 9 Feb 2015
Try this:
>> c = [0.7893,0.8337,0.1479,0,0,0.1479,0.9993];
>> X = sum(bsxfun(@(a,b)abs(a-b)<1e-6,c(:).',c(:)))<2;
>> X(1:find(c==0,1,'last')) = false;
>> c(X)
ans = 0.9993
As in my answer to your other related question , note that I did not use equality test == or unique with floating point numbers, but instead compared the difference of two values with some tolerance, in this case 1e-6. You can change the tolerance to best suit your problem.
  7 Comments
Stephen
Stephen on 10 Feb 2015
I have replied to this in a new answer.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!