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

2 visualizzazioni (ultimi 30 giorni)
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);

Risposte (1)

David Goodmanson
David Goodmanson il 4 Set 2020
Modificato: David Goodmanson il 4 Set 2020
HI Christina,
A = trapz(x,pyy) % find the unscaled area
pyy_new = pyy*(30/A);
trapz(x,pyy_new) % this will equal 30

Categorie

Scopri di più su MATLAB in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by