Generate a sector mask within a big matrix
1 次查看(过去 30 天)
显示 更早的评论
A sector mask is defined by distance and angle. Please see the image for clarification on mask.
I want to generate a 100 by 100 matrix where all the matrix element inside the mask is 1 otherwise 0.
![MASK.png](https://www.mathworks.com/matlabcentral/answers/uploaded_files/253980/MASK.png)
Thanks.
2 个评论
Looky
2019-12-11
Do you already have the coordinates as show in the image? Then just convert to polar using cart2pol and afterwards use some simple logic to check for radius and the angle.
采纳的回答
Looky
2019-12-11
编辑:Looky
2019-12-11
Solution could look like this:
% Generate example coordinates
x=linspace(-1,1,100);
y=fliplr(linspace(-1,1,100));
[X,Y]=meshgrid(x,y);
% Parameters for sector
angle=10;
radiusIn=.8;
radiusOut=.2;
% Coordinates to polarcoordinates
[phi, rho]=cart2pol(X,Y);
phi=rad2deg(phi);
phi(phi<0)=-phi(phi<0);
% Generate mask
mask=rho>radiusOut & rho<radiusIn & phi>angle& phi<180-angle;
% Have a look at the mask
spy(mask);
For your problem you should exchange the first part of generating the X and Y values for your own coordinates. Otherwise the mask might not be centered the way your data is.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Author Block Masks 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!