7 views (last 30 days)

Show older comments

[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];

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)

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.

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

Start Hunting!