Scaling an array by a certain number so that the area under the curve equals a fixed number

1 visualización (últimos 30 días)
Hi friends,
Say if I have an array Pyy consisting of 1000 elements. I want the area under the curve (x, Pyy) of this array to equal a fixed number, lets call this number 30.
I would like to do this by scaling the Pyy term to create a NEW vector (PyyNEW) (scaled from Pyy) which fits this criteria, so:
trapz(x, PyyNEW) = 30
How do I achieve this? SO far I have this code but doesnt seem to work:
syms a; %create a variable to solve algebraically
for i = 1:1000;
PyyNEW(i,1) = pyy(i,1)*a;
end
eqn = trapz(x, PyyNEW, 1) == 30;
sola = solve(eqn, a);

Respuestas (1)

David Goodmanson
David Goodmanson el 4 de Sept. de 2020
Editada: David Goodmanson el 4 de Sept. de 2020
HI Christina,
A = trapz(x,pyy) % find the unscaled area
pyy_new = pyy*(30/A);
trapz(x,pyy_new) % this will equal 30

Categorías

Más información sobre MATLAB en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by