2 views (last 30 days)

Show older comments

Hi. I have a 2D matrix which I can plot using imagesc with respect to distance: x and y (from -xs to +xs). Here's how I discretize my data on x and y:

xs=D./2;

dx=2.*xs./N;

dy=dx;

X=linspace(-xs,xs,N);

Y=linspace(-xs,xs,N);

[x y]=meshgrid(X,Y);

r1=(x.^2+y.^2).^(0.5);

TH1=atan2(y,x);

Now I need to extract radially symmetric sets of data for further analyzing. I mean from 0 to r1. How should I choose the width of r? If I have two matrices like this, how can I interpolate and compare the data on the same 'r' from one matrix with the other one? Thanks

Image Analyst
on 16 May 2018

Do you want something like this:

D = 10

N = 100

xs=D./2;

dx=2.*xs./N;

dy=dx;

X=linspace(-xs,xs,N);

Y=linspace(-xs,xs,N);

[x y]=meshgrid(X,Y);

r1=(x.^2+y.^2).^(0.5);

subplot(2, 2, 1);

imshow(r1, []);

axis on;

circleMask = r1 < 3;

subplot(2, 2, 2);

imshow(circleMask, []);

axis on;

r2 = r1 .* double(circleMask);

subplot(2, 2, 3);

imshow(r2, []);

axis on;

% Get mean of r1 image inside circle mask

mean_r1 = mean(r1(circleMask))

message = sprintf('The mean of r1 inside the circle mask = %f', mean_r1);

uiwait(helpdlg(message));

Image Analyst
on 17 May 2018

No, pass the coordinates of the circle perimeter (your x and y) into improfile().

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

Start Hunting!