is there an index maneuver if index is 0?
4 次查看(过去 30 天)
显示 更早的评论
Hello,
I am running a ismember:
[logical idx] = ismember(hund(:,1),dogs(:,2))
('hund' is often around 3,000 rows, and 'dogs' is often around 100,000 rows).
This give me an output that could be something like this
logical = idx =
1 355
1 536
1 746
0 0
1 1042
0 0
Then I need to find the second column in the 'dogs' variable for the index and inset this in the 'hund' variable as the 2. column like this:
hund(:,2) = dogs(idx,2)
The problem is, the above does not account for if the idx is zero. I get this error:
'Index in position 1 is invalid. Array indices must be positive integers or logical values.'
Does anyone know a solution to get arround of this?
1 个评论
Walter Roberson
2019-9-29
Using logical as the name of a variable can interfere with using logical as the name of a class, and will confuse people.
采纳的回答
the cyclist
2019-9-28
编辑:the cyclist
2019-9-28
hund(logical,2) = dogs(idx(logical),2)
If hund does not already have a second column, you'll need to do something like
hund = [hund, zeros(numel(hund),1)];
beforehand.
4 个评论
the cyclist
2019-9-30
Yeah, although I hope the camel case is a strong hint that this is a variable.
I guess hundIsInDog would do the trick here.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!