How to obtain samples within angular windows?

Hi, Let us say I have a projectile moving around in a square environment and I want to sample all positions where the projectile has travelled within a 20 degrees angular window, as seen from a fixed point in the environment. Can anyone help me figure out how to do this? In the attached picture, the spiral is a made up path of the projectile and the red dot is the fixed point from which I want to make the angular window.
Thanks

1 个评论

Ok, so if I construct vectors with 20 degrees separation emanating from the fixed point (as in the picture below), can I then somehow get all the non-NaN elements (i.e where the projectile has been) in the area between two vectors?

请先登录,再进行评论。

回答(1 个)

Hi,
Since you are asking for a way in which you can get the non- NaN elements, I suppose you are having a matrix which corresponds to the image. Let me know if that is not the case.
Now, I would suggest you to make use of the function "isnan". isnan(A) returns an array with the same size as A containing logical 1 (true) where the elements of A are NaNs and logical 0 (false) where they are not.
So if it's just a 1D vector ( say y), you can simply do something like this:
>>y1 = y(~isnan(y));
You can read about this in detail in the below link:
Hope it helps!!

3 个评论

Hi,
Thanks for the reply. I do not have a matrix corresponding to the image. Sorry for being unclear about that. Actually, the answer seems to be to transform the xy-positions of the trajectory into polar coordinates, using cart2pol, then using bsxfun to decide if a certain position belongs to a certain sector. Example:
n % number of sectors
trajectory % array with xy positions of trajectory
x0, y0 % point from which sectors are made
theta = cart2pol(trajectory(x)-x0, trajectory(y)-y0)
sectors = linspace(-pi,pi,n+1)
sectorgrouping = bsxfun(@le, sectors(1:end-1).', theta)& ... bsxfun(@gt, sectors(2:end).', theta);
I would say so.
If one also wants a vector with the sector identity for each
position sample, one may add the following to the example above:
sectorIdentity = (1:n) * sectorgrouping;
Thanks

请先登录,再进行评论。

提问:

OH
2017-1-17

评论:

OH
2017-1-21

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by