indexing a set in an array

Dear users, Im trying to find a fast way to index a set of elements of an array that meet some criteria. For instance, Imagine that I have an array A=zeros(Nx,Ny) Nx=1000;Ny=1000. so A(k,l)=0 for all k,l<1000. Now I would like the set of indices, call them SET, that fullfill (k-ko)^2+(l-lo)^2<R^2 From which I can A(SET)=1. In this way with any given distance function I can build indicator functions for arbitrary sets.

4 Comments

If you show us what you've tried so far we can see if we can beat it.
Paul Gendron
Paul Gendron on 21 Jan 2021
Edited: Paul Gendron on 21 Jan 2021
Thanks, so for instance it is quite easy in Matlab to create an indicator function for a rectangular set. M=30,P=40;Let Ix=ko+[-M:M], ly=lo+[-P:P], then A(lx,ly)=1 will created an indicator function over the rectangle of height 2M and width 2P. But now I would like a fast simple way to create indicator functions for other types of sets, discs, elipses etc. Not just rectangles.
Looks like Matt J hit the nail on the head. ✅
He really did, that deal() function is a gem and time saver. Thanks again Matt.

Sign in to comment.

 Accepted Answer

[k,l]=deal(1:1000);
SET=(k.'-k0).^2+(l-lo).^2 < R^2;

More Answers (0)

Categories

Asked:

on 18 Jan 2021

Commented:

on 22 Jan 2021

Community Treasure Hunt

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

Start Hunting!