is there an index maneuver if index is 0?
2 ビュー (過去 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!