- https://in.mathworks.com/help/matlab/ref/histcounts.html
- https://www.mathworks.com/help/matlab/ref/cumsum.html
- https://www.mathworks.com/help/matlab/ref/flip.html
- https://www.mathworks.com/help/matlab/ref/deg2rad.html
Integrate polar histogram values about a certain value
2 views (last 30 days)
Show older comments
I have a set of directional (circular) data, and I also have the mean value of this data. I need to find out how to integrate the normlaized polar histogram to clockwise and counter-clockwise away from the mean. How could this be done, given that the data is some value X? Additionally, how could find the angle away from the mean such that I have 0.25 on eitherside of the mean? To put it in math terms, I need to determine what and are the following
Here the PMF is the normalized polar histogram for X.
0 Comments
Accepted Answer
Ayush
on 22 Aug 2023
Here is the function to integrate normalized polar histogram to clockwise & counterclockwise away from mean:
function [clockwise_cumulative_sum, counterclockwise_cumulative_sum] = integrate_polar_histogram(data, mean_value)
% Step 1: Normalize the circular data
normalized_data = deg2rad(data - mean_value);
% Step 2: Create a polar histogram
num_bins = 36; % Number of bins for the histogram
[histogram, ~] = histcounts(normalized_data, num_bins, 'BinLimits', [-pi pi]);
% Step 3: Normalize the histogram
normalized_histogram = histogram / numel(normalized_data);
% Step 4: Integrate the normalized histogram
clockwise_cumulative_sum = cumsum(normalized_histogram);
counterclockwise_cumulative_sum = flip(cumsum(flip(normalized_histogram)));
end
Refer to following documentation for further information:
Here is the function to get the angle on either side of the mean to have:
function angle_with_0_25 = find_angle_with_0_25_on_either_side(clockwise_cumulative_sum)
% Find the bin where the cumulative sum reaches 0.25
bin_index = find(clockwise_cumulative_sum >= 0.25, 1);
% Calculate the angle at the midpoint of the bin
angle_with_0_25 = (bin_index + 0.5) * (2 * pi / numel(clockwise_cumulative_sum));
angle_with_0_25 = rad2deg(angle_with_0_25);
end
An example to run the above workflow:
% Example usage
data = [10, 20, 30, 40, 350, 355, 5]; % Example circular data
mean_value = 0; % Example mean value
[clockwise_cumulative_sum, counterclockwise_cumulative_sum] = integrate_polar_histogram(data, mean_value);
angle_with_0_25 = find_angle_with_0_25_on_either_side(clockwise_cumulative_sum);
disp(['Angle away from the mean with 0.25 on either side: ' num2str(angle_with_0_25)]);
0 Comments
More Answers (0)
See Also
Categories
Find more on Histograms 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!