How to calculate center of pressure given a 2d array containing pressure data
30 次查看(过去 30 天)
显示 更早的评论
So as the title says I want to know how to calculate the center of pressure coordinates given that the input will be a 2d matrix with each element representing a "pressure grid".
3 个评论
the cyclist
2024-3-13
编辑:the cyclist
2024-3-13
Do elements with index 1,2,3 ... representing points that are equally spaced in the "real world"? Is the spacing the same along the two dimensions?
采纳的回答
the cyclist
2024-3-13
编辑:the cyclist
2024-3-13
If the answers to both of the questions in my comment is "yes", then
% Example input
pressureArray = [1 2 3;
4 5 6;
7 8 9]
% Get array size
[rows, cols] = size(pressureArray);
% Total pressure
totalPressure = sum(pressureArray,"all");
% Calculate moments about x and y axes
momentX = sum((1:cols) .* pressureArray,"all");
momentY = sum((1:rows)' .* pressureArray,"all");
% Calculate center of pressure
COP_x = momentX / totalPressure
COP_y = momentY / totalPressure
The "spatial" coordinates are the indexing of the array (in this case 1:3 along both directions). You may need to apply a multiplier, or translation operation.
更多回答(1 个)
Image Analyst
2024-3-14
If you have the Image Processing Toolbox (I think most people do) then you can do it in one line of code by asking regionprops to compute the weighted centroid.
% Example input from the cyclist
pressureArray = [1 2 3;
4 5 6;
7 8 9];
% Using regionprops to compute the weighted centroid. Requires Image Processing Toolbox.
props = regionprops(true(size(pressureArray)), pressureArray, 'WeightedCentroid')
2 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!