ismember 0×0 empty logical array to logic
显示 更早的评论
Hi All,
I have an array "A = [1 2 3 4 5 6]" which its length reduces in a loop
if ~ismember(A,ID)
do this
else
do that
end
This works fine until the A=[], which ismember returns
0×0 empty logical array
However I need a Single Value and not logical array. Note that I cannot use any and all functions to reduce Logical Arrays to Single Value, beacuse I faced with other problems when "A" array is not yet empty!
How can I fix this problem?
1 个评论
madhan ravi
2019-4-19
First and foremost what is your goal? What is the expected result for given A?
采纳的回答
更多回答(1 个)
the cyclist
2019-4-19
编辑:the cyclist
2019-4-19
Making a huge guess here, but are you sure you don't mean
~ismember(ID,A)
rather than
~ismember(A,ID)
Then, assuming ID is a scalar,
~ismember(ID,[])
returns true, which I'm guessing is the result you are intending.
Like I said ... just a guess. (And you might need to adjust your other logic accordingly.)
Part of the reason I am guessing this is that
~ismember(A,ID)
returns a vector of values (if A is a vector and ID is a scalar), which is not typically what you want in an if statement. But maybe it is in your case.
3 个评论
Sonima
2019-4-19
the cyclist
2019-4-19
OK, so are you aware that
if [true true false]
do this
else
do that
end
will "do that", because every element has to be true to get to the "do this" part of the if statement. (The reason I am so insistent is that this is a very common misunderstanding, and people often think that MATLAB somehow process the vector "in parallel".)
It would be good to give a an example of a combination of A and ID where you expect your if statement to "do this". It seems to me that the only way it happens is if none of the elements of A is equal to ID, in which case there are simpler ways to do what you want.
Sonima
2019-4-20
类别
在 帮助中心 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!