Is it possible to use the trapz function to calculate the integrated value for each point of a data set?

1 次查看(过去 30 天)
I have a column of data that plots a sin wave. I want to know the area under the curve at a given point or of a set number of samples, for example, a time vector.
This data is plotted against time with every 100 data points representing one second.
Is it possible to calculate the area under the curve for every 100 points? I want to end up with a sin wave with the integrated values i.e. how the area under the curve changes over time.
Is this possible? or is there another/better way to do this?
Thank you in advance

回答(1 个)

Star Strider
Star Strider 2018-7-12
I am not certain how you are generating your signal.
One option is to use the reshape (link) function with your signal:
t = linspace(0, 2*pi, 10000);
s = sin(t);
sr = reshape(s(:), 100, []);
int_sr = trapz(sr);
  2 个评论
Star Strider
Star Strider 2018-7-12
Try this:
Fs = 100; % Sampling Frequency (Hz)
N = 6767; % Number Of Samples
t = linspace(0, N, N)/Fs; % Time Vector
s = sin(2*pi*t/75); % Signal
L = numel(s); % Signal Length
sr = reshape(s(1:fix(L/Fs)*Fs)', 100, []); % Reshape Signal Vector
int_sr = trapz(sr);
figure(1)
plot(t, s*100)
hold on
stairs(t(1:Fs:end-Fs), int_sr)
hold off

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Numerical Integration and Differentiation 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by