Extracting radially symmetric data from a matrix
Afficher commentaires plus anciens
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
1 commentaire
Rena Berman
le 30 Mai 2018
(Answers Dev) Restored edit
Réponses (1)
Image Analyst
le 16 Mai 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));
4 commentaires
MatlabUser17
le 16 Mai 2018
Image Analyst
le 16 Mai 2018
We can get the intensity along a line if you have the Image Processing Toolbox. We can use improfile to get interpolated values exactly along the circle perimeter. Do you have that toolbox?
MatlabUser17
le 16 Mai 2018
Image Analyst
le 17 Mai 2018
No, pass the coordinates of the circle perimeter (your x and y) into improfile().
Catégories
En savoir plus sur Other Formats dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!