Fit a custom made function to a certain trend within data from a matrix
Dear all,
I have been struggling for a while with the two issues that I show you below.
I have a matrix which represents the image of a pixelated neutron detector. The units of such a matrix is Count/minute. If I plot the matrix with the command surface(X, Y, Z), being Z the matrix, I get the following figure:
In this figure we can see two different trends: the x=y line (plus its width), which is what we call the "Specular Ridge", and a tiny contribution given by the white dashed line, which is what we call the "Zemann Splitting". The Zemann splitting is given by the equation y = sqrt(x^2 – (1.47e-7*H*L^2)), where H is the magnetic field and L is the wavelength of the nuetrons (5.183 AA in my case).
I would like to find the optimum H which fits best to the data inside the red circle by using the above mentioned equation (H should be something like 6-7). And later I would like to make a ROI (Region Of Interest) to count how many counts lay within such area.
I have attached the matrix (file 00607_UD_subplot.txt) and X and Y coordinates (files 00607_UD_xcoordinates.txt and 00607_UD_ycoordinates.txt).
The code to visualize the figure is the following:
A = load(‘00607_UD_subplot.txt’);
X = load(‘00607_UD_xcoordinates.txt’);
Y = load(‘00607_UD_ycoordinates.txt’);
surface(X, Y, A)
axis square
colormap(map);
caxis([5e-4 100])
set(gca,’colorscale’,’log’)
hold on
plot(X, sqrt((X.^2) – (1.47e-7*6.5*5.183^2)), ‘Color’,’white’,’LineStyle’,’–‘, ‘LineWidth’, 2)
xlabel(‘alpha_{i} [rad]’, ‘fontsize’, 18);
ylabel(‘alpha_{f} [rad]’, ‘fontsize’, 18);
cb1 = colorbar;
cb1.Label.String = ‘Neutron Intensity (CTS/MIN)’;
cb1.FontSize = 16;
cb1.Label.FontSize = 20;
cb1.LineWidth = 1.5;
Any help / suggestion would be helpful and very welcomedl!!!
Cheers,
Jose.Dear all,
I have been struggling for a while with the two issues that I show you below.
I have a matrix which represents the image of a pixelated neutron detector. The units of such a matrix is Count/minute. If I plot the matrix with the command surface(X, Y, Z), being Z the matrix, I get the following figure:
In this figure we can see two different trends: the x=y line (plus its width), which is what we call the "Specular Ridge", and a tiny contribution given by the white dashed line, which is what we call the "Zemann Splitting". The Zemann splitting is given by the equation y = sqrt(x^2 – (1.47e-7*H*L^2)), where H is the magnetic field and L is the wavelength of the nuetrons (5.183 AA in my case).
I would like to find the optimum H which fits best to the data inside the red circle by using the above mentioned equation (H should be something like 6-7). And later I would like to make a ROI (Region Of Interest) to count how many counts lay within such area.
I have attached the matrix (file 00607_UD_subplot.txt) and X and Y coordinates (files 00607_UD_xcoordinates.txt and 00607_UD_ycoordinates.txt).
The code to visualize the figure is the following:
A = load(‘00607_UD_subplot.txt’);
X = load(‘00607_UD_xcoordinates.txt’);
Y = load(‘00607_UD_ycoordinates.txt’);
surface(X, Y, A)
axis square
colormap(map);
caxis([5e-4 100])
set(gca,’colorscale’,’log’)
hold on
plot(X, sqrt((X.^2) – (1.47e-7*6.5*5.183^2)), ‘Color’,’white’,’LineStyle’,’–‘, ‘LineWidth’, 2)
xlabel(‘alpha_{i} [rad]’, ‘fontsize’, 18);
ylabel(‘alpha_{f} [rad]’, ‘fontsize’, 18);
cb1 = colorbar;
cb1.Label.String = ‘Neutron Intensity (CTS/MIN)’;
cb1.FontSize = 16;
cb1.Label.FontSize = 20;
cb1.LineWidth = 1.5;
Any help / suggestion would be helpful and very welcomedl!!!
Cheers,
Jose. Dear all,
I have been struggling for a while with the two issues that I show you below.
I have a matrix which represents the image of a pixelated neutron detector. The units of such a matrix is Count/minute. If I plot the matrix with the command surface(X, Y, Z), being Z the matrix, I get the following figure:
In this figure we can see two different trends: the x=y line (plus its width), which is what we call the "Specular Ridge", and a tiny contribution given by the white dashed line, which is what we call the "Zemann Splitting". The Zemann splitting is given by the equation y = sqrt(x^2 – (1.47e-7*H*L^2)), where H is the magnetic field and L is the wavelength of the nuetrons (5.183 AA in my case).
I would like to find the optimum H which fits best to the data inside the red circle by using the above mentioned equation (H should be something like 6-7). And later I would like to make a ROI (Region Of Interest) to count how many counts lay within such area.
I have attached the matrix (file 00607_UD_subplot.txt) and X and Y coordinates (files 00607_UD_xcoordinates.txt and 00607_UD_ycoordinates.txt).
The code to visualize the figure is the following:
A = load(‘00607_UD_subplot.txt’);
X = load(‘00607_UD_xcoordinates.txt’);
Y = load(‘00607_UD_ycoordinates.txt’);
surface(X, Y, A)
axis square
colormap(map);
caxis([5e-4 100])
set(gca,’colorscale’,’log’)
hold on
plot(X, sqrt((X.^2) – (1.47e-7*6.5*5.183^2)), ‘Color’,’white’,’LineStyle’,’–‘, ‘LineWidth’, 2)
xlabel(‘alpha_{i} [rad]’, ‘fontsize’, 18);
ylabel(‘alpha_{f} [rad]’, ‘fontsize’, 18);
cb1 = colorbar;
cb1.Label.String = ‘Neutron Intensity (CTS/MIN)’;
cb1.FontSize = 16;
cb1.Label.FontSize = 20;
cb1.LineWidth = 1.5;
Any help / suggestion would be helpful and very welcomedl!!!
Cheers,
Jose. curve fitting, region of interest MATLAB Answers — New Questions