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

1 vue (au cours des 30 derniers jours)
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);

Réponses (1)

David Goodmanson
David Goodmanson le 4 Sep 2020
Modifié(e) : David Goodmanson le 4 Sep 2020
HI Christina,
A = trapz(x,pyy) % find the unscaled area
pyy_new = pyy*(30/A);
trapz(x,pyy_new) % this will equal 30

Catégories

En savoir plus sur MATLAB dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by