Clear Filters
Clear Filters

I read a 3d image in matlab and converts to a matrix of size 100036*3.Now i want to find correlation coefficient of this matrix separately in x,y &z direction in matlab

23 views (last 30 days)
I want to find correlaion coefficient in different directions separately .But for finding correlation coefficient i need two variable.So how i can find correlation coefficients in x- direction, y-direction and z-direction separately

Accepted Answer

Subhajyoti
Subhajyoti on 15 Jul 2024 at 5:05
Hi Reet,
To efficiently compute the correlation coefficients, we will shift the data along each direction and compute the correlation between the original and shifted data.
Here’s MATLAB code snippet to illustrate using ‘corrcoef’ function for data-matrix:
Step 1: Read the 3D image
% For demonstration, we will generate a random 3D matrix
Nx = 100; Ny = 100; Nz = 10; % Replace with actual dimensions
img3D = rand(Nx, Ny, Nz); % Replace with actual image data
sizeOfImage = size(img3D)
sizeOfImage = 1x3
100 100 10
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
Step 2: Calculate correlation coefficients
% For x-direction
x_original = img3D(1:end-1, :, :);
x_shifted = img3D(2:end, :, :);
x_original_flat = x_original(:);
x_shifted_flat = x_shifted(:);
corr_x = corrcoef(x_original_flat, x_shifted_flat);
corr_x = corr_x(1, 2) % Get the correlation coefficient
corr_x = 0.0035
% For y-direction
y_original = img3D(:, 1:end-1, :);
y_shifted = img3D(:, 2:end, :);
y_original_flat = y_original(:);
y_shifted_flat = y_shifted(:);
corr_y = corrcoef(y_original_flat, y_shifted_flat);
corr_y = corr_y(1, 2)
corr_y = -0.0013
% For z-direction
z_original = img3D(:, :, 1:end-1);
z_shifted = img3D(:, :, 2:end);
z_original_flat = z_original(:);
z_shifted_flat = z_shifted(:);
corr_z = corrcoef(z_original_flat, z_shifted_flat);
corr_z = corr_z(1, 2)
corr_z = 1.6429e-04
Step 3: Display the results
fprintf('Correlation coefficient in x direction: %f\n', corr_x);
Correlation coefficient in x direction: 0.003540
fprintf('Correlation coefficient in y direction: %f\n', corr_y);
Correlation coefficient in y direction: -0.001345
fprintf('Correlation coefficient in z direction: %f\n', corr_z);
Correlation coefficient in z direction: 0.000164
For more details on the Correlation coefficients, go through the following MathWorks documentation.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!