# For loop with use of larger than

2 views (last 30 days)
Yarne Schlösser on 3 Mar 2021
Commented: Rik on 10 Mar 2021
I have this pressure-angle diagram in which the angle is plotted on the y axis and the pressure on the x-axis. The plot is made out of several data points.
The angle array is a 47245x1 array with values between -360 and 360).
The pressure array is also a 47245x1 array.
Now I want to calculate the average data value of the pressure for every small angle change.
I was thinking in way to sum of the data points between -360 degrees and -359.50 degrees divided by the length of these data points. I want to repeat this process for the complete range for the angle, but I cannot figure it out.

KALYAN ACHARJYA on 3 Mar 2021
Edited: KALYAN ACHARJYA on 3 Mar 2021
Now I want to calculate the average data value of the pressure for every small angle change.
Hint: Do modify accordingly
angle_data=......%Array
average_presure=zeros(1,length(angle_data));
for i=1:length(angle_data)
pressure_data= .......% Calculate Pressure based on angle(i)
average_presure(i)=mean(pressure_data);
end
Yarne Schlösser on 10 Mar 2021
Thank you for your response. This one works, but takes a long time for matlab to calculate.

Rik on 3 Mar 2021
Edited: Rik on 3 Mar 2021
It sounds like one of the functions related to histcounts is appropriate here.
angles=rand(500,1)*2*360-360;
pressure=sind(angles)+rand(size(angles))/5;
[N,edges,bin] = histcounts(angles,100);
bin_centers=edges(2:end)-diff(edges)/2;
mean_pressure=accumarray(bin,pressure,[],@mean);
plot(angles,pressure,'.')
hold on,plot(bin_centers,mean_pressure,'LineWidth',2)
Rik on 10 Mar 2021
Do you want to calculate the standard deviation for each bin separately, for the original data, or for mean_pressure?
In case it is the first, did you read the documentation for accumarray?

R2020b

### Community Treasure Hunt

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

Start Hunting!

Translated by