Wrap noisy periodic line into circular mask
3 views (last 30 days)
Show older comments
Hi all,
I'm trying to generate a mask based off a periodic noisy line that is wrapped into a circle.
I can generate a path for the circle around the x,y plane. However I'm stuggling on making it into a mask.
Essentially, I want everything inside the circle to have value 0 and everything outside it to have value 1.
This mask should be returned as an array of dimensions (x,y)
I really need this doing without any fancy inbuilt functions, as I will be porting this to another language.
I feel there must be some solution using loops but I cant quite get it.
Please find the code to generate the noisy circle below:
%% Setup and grid
clear all ; clc; clf
N=256
L=128
x=L*(-(N-1)/2:N/2)/N;
y=x;
%% Generate noisy periodic line through fourier modes
M=10 %number of modes
kmax=N/2
kx=(randi(kmax,1,M)-kmax/2);%random wave numbers
x=L*(-(N-1)/2:N/2)/N;
y=x;
V=zeros(1,N);
A=rand(M)*2-1; %random amplitudes
B=rand(M)*2-1;
for i=1:M
V=V+A(i)*sin((2*pi/L)*kx(i)*x)+B(i)*cos((2*pi/L)*kx(i)*x);
end
%% Generate circular mask
radius = 50; % Choose base circle radius
Pot_rad = radius + V;
for i=1:N
xnew(i) = Pot_rad(i)*cos(x(i)*(2*pi/L));
ynew(i) = Pot_rad(i)*sin(x(i)*(2*pi/L));
end
plot(xnew,ynew)
TLDR; Make Array mask V2D(x,y) from noisy line V(x) wrapped into circle.
Thanks in advance :)
0 Comments
Answers (0)
See Also
Categories
Find more on Surface and Mesh Plots in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!