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

5 ビュー (過去 30 日間)
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?

採用された回答

Rohit Kulkarni
Rohit Kulkarni 2022 年 7 月 7 日
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
  1 件のコメント
Liv
Liv 2022 年 7 月 7 日
Yes, this does exactly what I’m looking for! Thank you!!

サインインしてコメントする。

その他の回答 (1 件)

Jon
Jon 2022 年 7 月 7 日
x = [3 2 1 5 1 4 0]
L = x == 1
  5 件のコメント
Jon
Jon 2022 年 7 月 7 日
編集済み: Jon 2022 年 7 月 7 日
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)])

サインインしてコメントする。

カテゴリ

Find more on Numeric Types 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!

Translated by