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 Comment

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?

Sign in to comment.

Answers (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 Comments

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);
So, it's solved then?
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

Sign in to comment.

Asked:

OH
on 17 Jan 2017

Commented:

OH
on 21 Jan 2017

Community Treasure Hunt

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

Start Hunting!