[an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]
 
[an error occurred while processing this directive] [an error occurred while processing this directive]
Skåne Sjælland Linux User Group - http://www.sslug.dk Home   Subscribe   Mail Archive   Forum   Calendar   Search
MhonArc Date: [Date Prev] [Date Index] [Date Next]   Thread: [Date Prev] [Thread Index] [Date Next]   MhonArc
 

Re: [CPROG] Finde globalt max/min



Nicolai Hanssing <sslug@sslug> writes:

> Kender i en algoritme til at finde et lokalt/globalt max/min for en
> skalar funktion, hvor signalet er overlejret med støj?:
> bestem	max(g(k)), 
> udfra f(k)=g(k) + e
> 
> g(k) er ikke symmetrik omkring toppunktet, og derfor mener jeg ikke
> Center-of-Gravity kn anvendes... Andre ideer?  Man kan selvfølgelig
> lave noget filtrering, men det reducere kun variansen og jeg har et
> endeligt antal samples tilrådighed.

Jeg er lidt forvirret over hvad du mener. Så vidt jeg har forstået
starter du med et datasæt på følgende form:
k_1    k_2    k_3    ...
f(k_1) f(k_2) f(k_3) ...

Derefter leder du efter x, således at g'(x)=0. Der er sikkert flere
metoder til at gøre dette, men du kunne jo starte med at gætte på
hvordan g ser ud. Jeg har ikke set dine data, men lad os bare sige at
eksisterer a, b og c således at g kan skrives sådan her

g(x) = a*exp(-(x-b)^2/c)

(Det kan de nok ikke, men så må du finde en anden g). Nu kan du fitte
din funktion. Det kan du gøre ved at finde a b og c, der minimerer

\sum_n  (f(k_n) - g(k_n))^2

(Hvis du antager at e er normalfordelt og uafhængig af k, så svarer
dette til at finde log likelihood estimatet). Nu har du a, b og
c. Derefter kan du differentiere g og finde x således at g'(x)=0.

Nu er det lidt tid siden at jeg har haft statistik, men så vidt jeg
husker (og det er nok forkert) er det sådan at hvis du antager at g er
en normalforelt, så ender du med at lede efter et vægtet massecentrum
af dine data.

Måske skal du kun tage de punkter med, der ligger tæt på toppunktet,
men det må du selv fifle lidt rundt med.

Hmm måske burde vi hoppe over på sci-comp listen, så vi kan få lidt
gang i den. Om ikke andet, så tror jeg at det er lettere for dig at
lave databehandlig i octave/matlab end det er at bruge c. Man kan vist
også inkludere ocatve i c, men det har jeg aldrig selv prøvet.

Held og lykke :)

-- 
Niels L Ellegaard  http://dirac.ruc.dk/~gnalle/
SPECIAL OFFER! I proofread unsolicited commercial email sent to this
address at a rate of US $500.00 per incident!  Include billing address
in your message and save US $500.00 per hour off ordinary address
resolution and tracking charge!


 
Home   Subscribe   Mail Archive   Index   Calendar   Search

 
 
Questions about the web-pages to <www_admin>. Last modified 2005-08-10, 20:08 CEST [an error occurred while processing this directive]
This page is maintained by [an error occurred while processing this directive]MHonArc [an error occurred while processing this directive] # [an error occurred while processing this directive] *