Index an array using specific indices
32 次查看(过去 30 天)
显示 更早的评论
I have a vector
x = [0,1,1,0,1,...,N] % x is vector containing either 1s or 0s of size N = 107199.
then I have another vector s, which contains index locations in x.
s= [23,100,500, 9888,....N] % s is of size 1x518
so I want to filter s to contain only indices where the values in x are 1s.
I tried something like this,
idx = x(s)~=1;
new_s = s(idx);
but it gives me this error Index exceeds the number of array elements (107520).. any idea what im doing wrongly?
0 个评论
回答(4 个)
DGM
2022-11-4
Try
% some test vectors
x = randi([0 1],1,20)
s = randi([1 numel(x)],1,10)
% this is the content selected by s
x(s)
% and then this would be cases where s selects 1s within x
new_s = s(x(s)==1)
0 个评论
dpb
2022-11-4
Well, if size N = 107199 while s is of size 1x518, then 107199 > 518 so any location in x past numel(s) is going to be an out of bounds reference.
It's not clear in isolation what relationship there is (if any) between x and s so why one would expect those two to be commensurate is puzzling.
Perhaps you're looking for locations that are in s that were found in some other fashion and wanting to know if there's a corresponding matching "1" value in x at the specific location? That's about the only way I can think of at the moment to relate the two -- if that were the case then try
new_s=s(ismember(s,find(~x)));
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!