How to return a true/false logical array from a string array of repeating numbers?

2 views (last 30 days)
ans = 3 2 1 5 1 4 0
I want this to return a 7x1 logical array 0 0 1 0 1 0 0. Corresponding to the repeating “1” in the ans variable. Or 1 1 0 1 0 1 1. Whichever is easier to program. How do I do this?

Accepted Answer

Rohit Kulkarni
Rohit Kulkarni on 7 Jul 2022
I think this may work:
A = [3 3 2 1 5 1 0 4];
[uniqueA i j] = unique(A,'first');
idRep = find(not(ismember(1:numel(A),i)))
idRep = 1×2
2 6
rep_var = A(idRep)
rep_var = 1×2
3 1
ll = ismember(A,rep_var)
ll = 1×8 logical array
1 1 0 1 0 1 0 0

More Answers (1)

Jon
Jon on 7 Jul 2022
x = [3 2 1 5 1 4 0]
L = x == 1
  5 Comments
Liv
Liv on 7 Jul 2022
No, I seem to be getting an array bounds error. I’m sure if I went through the troubleshooting process that it would work, but for now I will be using the other user’s answer. If I ever go back to it again then I will update this thread.
Jon
Jon on 7 Jul 2022
Edited: Jon on 7 Jul 2022
That's fine as long as you have a solution, but I'm puzzled, as to why you would have array bounds errors, when as you can see it ran without issues in the small example I show above. As you had an array bounds error, are you sure you used :
[N,edges,bin]= histcounts(x,[u,u(end)+1])
and not:
[N,edges,bin]= histcounts(x,[u,u(end+1)])

Sign in to comment.

Categories

Find more on Line Plots 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!