Error Operands to the || and && operators must be convertible to logical scalar values.

2 views (last 30 days)
Names = {'RHip','RKnee','RAnkle'};
Why doing this works ok
if~isempty( strfind(Names{1}, 'Hip') || strfind(Names{2}, 'Knee'))
if~isempty( strfind(Names{1}, 'Hip') || strfind(Names{3}, 'Knee'))
but doing this gives the error Operands to the || and && operators must be convertible to logical scalar values.
if~isempty( strfind(Names{3}, 'Hip') || strfind(Names{2}, 'Knee'))
Note in code was missing the ~isempty (i already added it). Nevertheless this dont change the outcome. The problem is that when the first operation give an [ ] the outcome is an error

Accepted Answer

Walter Roberson
Walter Roberson on 7 Feb 2019
strfind can return empty and you cannot use && or || with empty .
strfind finds all occurrences and returns their index . It is not intended to directly answer the question of whether to pattern occurs somewhere Yes or No. With new enough MATLAB use contains()

More Answers (1)

Armindo
Armindo on 7 Feb 2019
Thanks but that don't solve the problem. The code doesn't work with || neither with |.

Categories

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