Changeset 3615 in Sophya for trunk/SophyaLib/NTools
- Timestamp:
- May 1, 2009, 1:34:31 PM (16 years ago)
- Location:
- trunk/SophyaLib/NTools
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/NTools/Makefile
r3608 r3615 33 33 $(SOPHYAINCP)ndatablock.h \ 34 34 $(SOPHYAINCP)utilarr.h \ 35 $(SOPHYAINCP)randinterf.h \ 35 36 $(SOPHYAINCP)tmatrix.h \ 36 37 $(SOPHYAINCP)tmatrix_tsnl.h \ … … 67 68 $(SOPHYAINCP)ndatablock.h \ 68 69 $(SOPHYAINCP)utilarr.h \ 70 $(SOPHYAINCP)randinterf.h \ 69 71 $(SOPHYAINCP)tmatrix_tsnl.h \ 70 72 $(SOPHYAINCP)fioarr.h \ … … 114 116 $(SOPHYAINCP)ndatablock.h \ 115 117 $(SOPHYAINCP)utilarr.h \ 118 $(SOPHYAINCP)randinterf.h \ 116 119 $(SOPHYAINCP)tmatrix_tsnl.h \ 117 120 $(SOPHYAINCP)tvector_tsnl.h \ … … 120 123 121 124 $(SOPHYAOBJP)dynccd.o: dynccd.cc $(SOPHYAINCP)sopnamsp.h \ 122 $(SOPHYAINCP)machdefs.h fmath.h perandom.h \ 123 $(SOPHYAINCP)tvector.h \ 124 $(SOPHYAINCP)tmatrix.h \ 125 $(SOPHYAINCP)machdefs.h \ 126 $(SOPHYAINCP)tarray.h \ 127 $(SOPHYAINCP)basarr.h \ 128 $(SOPHYAINCP)anydataobj.h \ 125 $(SOPHYAINCP)machdefs.h fmath.h \ 126 $(SOPHYAINCP)srandgen.h \ 127 $(SOPHYAINCP)machdefs.h \ 128 $(SOPHYAINCP)randinterf.h \ 129 $(SOPHYAINCP)anydataobj.h perandom.h \ 130 $(SOPHYAINCP)tvector.h \ 131 $(SOPHYAINCP)tmatrix.h \ 132 $(SOPHYAINCP)tarray.h \ 133 $(SOPHYAINCP)basarr.h \ 129 134 $(SOPHYAINCP)mutyv.h \ 130 135 $(SOPHYAINCP)timestamp.h \ … … 146 151 $(SOPHYAINCP)perrors.h \ 147 152 $(SOPHYAINCP)fmath.h \ 148 $(SOPHYAINCP)tvector.h \ 149 $(SOPHYAINCP)srandgen.h classfunc.h cimage.h \ 153 $(SOPHYAINCP)tvector.h classfunc.h cimage.h \ 150 154 $(SOPHYAINCP)tmatrix.h \ 151 155 $(SOPHYAINCP)fioarr.h dynccd.h \ … … 175 179 $(SOPHYAINCP)ndatablock.h \ 176 180 $(SOPHYAINCP)utilarr.h \ 181 $(SOPHYAINCP)randinterf.h \ 177 182 $(SOPHYAINCP)tmatrix_tsnl.h \ 178 183 $(SOPHYAINCP)tvector_tsnl.h generaldata.h \ … … 207 212 $(SOPHYAINCP)ndatablock.h \ 208 213 $(SOPHYAINCP)utilarr.h \ 214 $(SOPHYAINCP)randinterf.h \ 209 215 $(SOPHYAINCP)tmatrix_tsnl.h \ 210 216 $(SOPHYAINCP)tvector_tsnl.h generaldata.h \ … … 239 245 $(SOPHYAINCP)ndatablock.h \ 240 246 $(SOPHYAINCP)utilarr.h \ 247 $(SOPHYAINCP)randinterf.h \ 241 248 $(SOPHYAINCP)tmatrix_tsnl.h \ 242 249 $(SOPHYAINCP)tvector.h \ … … 266 273 $(SOPHYAINCP)ndatablock.h \ 267 274 $(SOPHYAINCP)utilarr.h \ 275 $(SOPHYAINCP)randinterf.h \ 268 276 $(SOPHYAINCP)tmatrix_tsnl.h \ 269 277 $(SOPHYAINCP)tvector.h \ … … 292 300 $(SOPHYAINCP)ndatablock.h \ 293 301 $(SOPHYAINCP)utilarr.h \ 302 $(SOPHYAINCP)randinterf.h \ 294 303 $(SOPHYAINCP)tmatrix_tsnl.h \ 295 304 $(SOPHYAINCP)tvector.h \ … … 319 328 $(SOPHYAINCP)ndatablock.h \ 320 329 $(SOPHYAINCP)utilarr.h \ 330 $(SOPHYAINCP)randinterf.h \ 321 331 $(SOPHYAINCP)tmatrix_tsnl.h \ 322 332 $(SOPHYAINCP)tvector_tsnl.h \ … … 346 356 $(SOPHYAINCP)ndatablock.h \ 347 357 $(SOPHYAINCP)utilarr.h \ 358 $(SOPHYAINCP)randinterf.h \ 348 359 $(SOPHYAINCP)tmatrix_tsnl.h \ 349 360 $(SOPHYAINCP)tvector_tsnl.h generaldata.h \ … … 378 389 $(SOPHYAINCP)ndatablock.h \ 379 390 $(SOPHYAINCP)utilarr.h \ 391 $(SOPHYAINCP)randinterf.h \ 380 392 $(SOPHYAINCP)tmatrix_tsnl.h \ 381 393 $(SOPHYAINCP)tvector_tsnl.h generaldata.h \ … … 418 430 $(SOPHYAINCP)ndatablock.h \ 419 431 $(SOPHYAINCP)utilarr.h \ 432 $(SOPHYAINCP)randinterf.h \ 420 433 $(SOPHYAINCP)tmatrix_tsnl.h \ 421 434 $(SOPHYAINCP)tvector_tsnl.h generaldata.h \ … … 458 471 $(SOPHYAINCP)ndatablock.h \ 459 472 $(SOPHYAINCP)utilarr.h \ 473 $(SOPHYAINCP)randinterf.h \ 460 474 $(SOPHYAINCP)tmatrix_tsnl.h \ 461 475 $(SOPHYAINCP)tvector_tsnl.h \ … … 488 502 $(SOPHYAINCP)ndatablock.h \ 489 503 $(SOPHYAINCP)utilarr.h \ 504 $(SOPHYAINCP)randinterf.h \ 490 505 $(SOPHYAINCP)tmatrix_tsnl.h cimage.h \ 491 506 $(SOPHYAINCP)fioarr.h \ … … 512 527 $(SOPHYAINCP)machdefs.h \ 513 528 $(SOPHYAINCP)pexceptions.h \ 514 $(SOPHYAINCP)machdefs.h perandom.h \ 515 $(SOPHYAINCP)tvector.h \ 516 $(SOPHYAINCP)tmatrix.h \ 517 $(SOPHYAINCP)tarray.h \ 518 $(SOPHYAINCP)basarr.h \ 519 $(SOPHYAINCP)anydataobj.h \ 529 $(SOPHYAINCP)machdefs.h \ 530 $(SOPHYAINCP)srandgen.h \ 531 $(SOPHYAINCP)randinterf.h \ 532 $(SOPHYAINCP)anydataobj.h perandom.h \ 533 $(SOPHYAINCP)tvector.h \ 534 $(SOPHYAINCP)tmatrix.h \ 535 $(SOPHYAINCP)tarray.h \ 536 $(SOPHYAINCP)basarr.h \ 520 537 $(SOPHYAINCP)mutyv.h \ 521 538 $(SOPHYAINCP)timestamp.h \ … … 537 554 $(SOPHYAINCP)perrors.h \ 538 555 $(SOPHYAINCP)fmath.h \ 539 $(SOPHYAINCP)tvector.h \ 540 $(SOPHYAINCP)srandgen.h classfunc.h pemath.h 556 $(SOPHYAINCP)tvector.h classfunc.h 541 557 $(CXXCOMPILE) $(CXXTEMPFLG) -o $@ perandom.cc 542 558 … … 564 580 $(SOPHYAINCP)ndatablock.h \ 565 581 $(SOPHYAINCP)utilarr.h \ 582 $(SOPHYAINCP)randinterf.h \ 566 583 $(SOPHYAINCP)tmatrix_tsnl.h \ 567 584 $(SOPHYAINCP)tvector_tsnl.h \ … … 594 611 $(SOPHYAINCP)ndatablock.h \ 595 612 $(SOPHYAINCP)utilarr.h \ 613 $(SOPHYAINCP)randinterf.h \ 596 614 $(SOPHYAINCP)tmatrix_tsnl.h \ 597 615 $(SOPHYAINCP)tvector_tsnl.h \ … … 629 647 $(SOPHYAINCP)ndatablock.h \ 630 648 $(SOPHYAINCP)utilarr.h \ 649 $(SOPHYAINCP)randinterf.h \ 631 650 $(SOPHYAINCP)tmatrix_tsnl.h \ 632 651 $(SOPHYAINCP)tvector_tsnl.h generalfit.h \ … … 680 699 $(SOPHYAINCP)ndatablock.h \ 681 700 $(SOPHYAINCP)utilarr.h \ 701 $(SOPHYAINCP)randinterf.h \ 682 702 $(SOPHYAINCP)tmatrix.h \ 683 703 $(SOPHYAINCP)tmatrix_tsnl.h \ -
trunk/SophyaLib/NTools/dynccd.cc
r2882 r3615 5 5 6 6 #include "fmath.h" 7 #include "srandgen.h" 7 8 #include "perandom.h" 8 9 -
trunk/SophyaLib/NTools/perandom.cc
r3608 r3615 1 1 #include "sopnamsp.h" 2 2 #include "machdefs.h" 3 #include <iostream> 3 4 #include "pexceptions.h" 5 #include "srandgen.h" 4 6 #include "perandom.h" 5 #include "pemath.h"6 #include <iostream>7 7 8 8 … … 290 290 } 291 291 292 293 294 /////////////////////////////////////////////////////////////////295 /*296 **** Remarques sur complex< r_8 > ComplexGaussRan(double sig) ****297 298 --- variables gaussiennes x,y independantes299 x gaussien: pdf f(x) = 1/(sqrt(2Pi) Sx) exp(-(x-Mx)^2/(2 Sx^2))300 y gaussien: pdf f(y) = 1/(sqrt(2Pi) Sy) exp(-(y-My)^2/(2 Sy^2))301 x,y independants --> pdf f(x,y) = f(x) f(y)302 On a:303 <x> = Integrate[x*f(x)] = Mx304 <x^2> = Integrate[x^2*f(x)] = Mx^2 + Sx^2305 306 --- On cherche la pdf g(r,t) du module et de la phase307 x = r cos(t) , y = r sin(t)308 r=sqrt(x^2+y^2 , t=atan2(y,x)309 (r,t) --> (x,y): le Jacobien = r310 311 g(r,t) = r f(x,y) = r f(x) f(y)312 = r/(2Pi Sx Sy) exp(-(x-Mx)^2/(2 Sx^2)) exp(-(y-My)^2/(2 Sy^2))313 314 - Le cas general est complique315 (cf D.Pelat cours DEA "bruits et signaux" section 4.5)316 317 - Cas ou "Mx = My = 0" et "Sx = Sy = S"318 c'est la pdf du module et de la phase d'un nombre complexe319 dont les parties reelles et imaginaires sont independantes320 et sont distribuees selon des gaussiennes de variance S^2321 g(r,t) = r/(2Pi S^2) exp(-r^2/(2 S^2))322 La distribution de "r" est donc:323 g(r) = Integrate[g(r,t),{t,0,2Pi}]324 = r/S^2 exp(-r^2/(2 S^2))325 La distribution de "t" est donc:326 g(t) = Integrate[g(r,t),{r,0,Infinity}]327 = 1 / 2Pi (distribution uniforme sur [0,2Pi[)328 Les variables aleatoires r,t sont independantes:329 g(r,t) = g(r) g(t)330 On a:331 <r> = Integrate[r*g(r)] = sqrt(PI/2)*S332 <r^2> = Integrate[r^2*g(r)] = 2*S^2333 <r^3> = Integrate[r^3*g(r)] = 3*sqrt(PI/2)*S^3334 <r^4> = Integrate[r^4*g(r)] = 8*S^4335 336 - Attention:337 La variable complexe "c = x+iy = r*exp(i*t)" ainsi definie verifie:338 <|c|^2> = <c c*> = <x^2+y^2> = <r^2> = 2 S^2339 Si on veut generer une variable complexe gaussienne telle que340 <c c*> = s^2 alors il faut prendre S = s/sqrt(2) comme argument341 342 */ -
trunk/SophyaLib/NTools/perandom.h
r3608 r3615 12 12 #include "tvector.h" 13 13 #include "histos.h" 14 #include "srandgen.h"15 14 #include "classfunc.h" 16 #include <complex>17 15 18 16 namespace SOPHYA { … … 54 52 }; 55 53 56 57 /*!58 \ingroup NTools59 \brief Returns a random complex number such that real and imaginary parts are gaussians with variance sig^260 */61 inline complex< r_8 > ComplexGaussRan(void)62 {return complex< r_8 >(NorRand(),NorRand());}63 inline complex< r_8 > ComplexGaussRan(double sig)64 {return complex< r_8 >(GauRnd(0.,sig),GauRnd(0.,sig));}65 66 /*!67 \ingroup NTools68 \brief Returns the module of a random complex number generated by ComplexGaussRan69 */70 inline double ModComplexGaussRan(double sig=1.)71 {double r=-log(1.-drand01()); return sig*sqrt(2.*r);}72 73 54 } // namespace SOPHYA 74 55 -
trunk/SophyaLib/NTools/smakefile
r3608 r3615 33 33 $(SOPHYAINCP)ndatablock.h \ 34 34 $(SOPHYAINCP)utilarr.h \ 35 $(SOPHYAINCP)randinterf.h \ 35 36 $(SOPHYAINCP)tmatrix.h \ 36 37 $(SOPHYAINCP)tmatrix_tsnl.h \ … … 67 68 $(SOPHYAINCP)ndatablock.h \ 68 69 $(SOPHYAINCP)utilarr.h \ 70 $(SOPHYAINCP)randinterf.h \ 69 71 $(SOPHYAINCP)tmatrix_tsnl.h \ 70 72 $(SOPHYAINCP)fioarr.h \ … … 114 116 $(SOPHYAINCP)ndatablock.h \ 115 117 $(SOPHYAINCP)utilarr.h \ 118 $(SOPHYAINCP)randinterf.h \ 116 119 $(SOPHYAINCP)tmatrix_tsnl.h \ 117 120 $(SOPHYAINCP)tvector_tsnl.h \ … … 120 123 121 124 $(SOPHYAOBJP)dynccd.o: dynccd.cc $(SOPHYAINCP)sopnamsp.h \ 122 $(SOPHYAINCP)machdefs.h fmath.h perandom.h \ 123 $(SOPHYAINCP)tvector.h \ 124 $(SOPHYAINCP)tmatrix.h \ 125 $(SOPHYAINCP)machdefs.h \ 126 $(SOPHYAINCP)tarray.h \ 127 $(SOPHYAINCP)basarr.h \ 128 $(SOPHYAINCP)anydataobj.h \ 125 $(SOPHYAINCP)machdefs.h fmath.h \ 126 $(SOPHYAINCP)srandgen.h \ 127 $(SOPHYAINCP)machdefs.h \ 128 $(SOPHYAINCP)randinterf.h \ 129 $(SOPHYAINCP)anydataobj.h perandom.h \ 130 $(SOPHYAINCP)tvector.h \ 131 $(SOPHYAINCP)tmatrix.h \ 132 $(SOPHYAINCP)tarray.h \ 133 $(SOPHYAINCP)basarr.h \ 129 134 $(SOPHYAINCP)mutyv.h \ 130 135 $(SOPHYAINCP)timestamp.h \ … … 146 151 $(SOPHYAINCP)perrors.h \ 147 152 $(SOPHYAINCP)fmath.h \ 148 $(SOPHYAINCP)tvector.h \ 149 $(SOPHYAINCP)srandgen.h classfunc.h cimage.h \ 153 $(SOPHYAINCP)tvector.h classfunc.h cimage.h \ 150 154 $(SOPHYAINCP)tmatrix.h \ 151 155 $(SOPHYAINCP)fioarr.h dynccd.h \ … … 175 179 $(SOPHYAINCP)ndatablock.h \ 176 180 $(SOPHYAINCP)utilarr.h \ 181 $(SOPHYAINCP)randinterf.h \ 177 182 $(SOPHYAINCP)tmatrix_tsnl.h \ 178 183 $(SOPHYAINCP)tvector_tsnl.h generaldata.h \ … … 207 212 $(SOPHYAINCP)ndatablock.h \ 208 213 $(SOPHYAINCP)utilarr.h \ 214 $(SOPHYAINCP)randinterf.h \ 209 215 $(SOPHYAINCP)tmatrix_tsnl.h \ 210 216 $(SOPHYAINCP)tvector_tsnl.h generaldata.h \ … … 239 245 $(SOPHYAINCP)ndatablock.h \ 240 246 $(SOPHYAINCP)utilarr.h \ 247 $(SOPHYAINCP)randinterf.h \ 241 248 $(SOPHYAINCP)tmatrix_tsnl.h \ 242 249 $(SOPHYAINCP)tvector.h \ … … 266 273 $(SOPHYAINCP)ndatablock.h \ 267 274 $(SOPHYAINCP)utilarr.h \ 275 $(SOPHYAINCP)randinterf.h \ 268 276 $(SOPHYAINCP)tmatrix_tsnl.h \ 269 277 $(SOPHYAINCP)tvector.h \ … … 292 300 $(SOPHYAINCP)ndatablock.h \ 293 301 $(SOPHYAINCP)utilarr.h \ 302 $(SOPHYAINCP)randinterf.h \ 294 303 $(SOPHYAINCP)tmatrix_tsnl.h \ 295 304 $(SOPHYAINCP)tvector.h \ … … 319 328 $(SOPHYAINCP)ndatablock.h \ 320 329 $(SOPHYAINCP)utilarr.h \ 330 $(SOPHYAINCP)randinterf.h \ 321 331 $(SOPHYAINCP)tmatrix_tsnl.h \ 322 332 $(SOPHYAINCP)tvector_tsnl.h \ … … 346 356 $(SOPHYAINCP)ndatablock.h \ 347 357 $(SOPHYAINCP)utilarr.h \ 358 $(SOPHYAINCP)randinterf.h \ 348 359 $(SOPHYAINCP)tmatrix_tsnl.h \ 349 360 $(SOPHYAINCP)tvector_tsnl.h generaldata.h \ … … 378 389 $(SOPHYAINCP)ndatablock.h \ 379 390 $(SOPHYAINCP)utilarr.h \ 391 $(SOPHYAINCP)randinterf.h \ 380 392 $(SOPHYAINCP)tmatrix_tsnl.h \ 381 393 $(SOPHYAINCP)tvector_tsnl.h generaldata.h \ … … 418 430 $(SOPHYAINCP)ndatablock.h \ 419 431 $(SOPHYAINCP)utilarr.h \ 432 $(SOPHYAINCP)randinterf.h \ 420 433 $(SOPHYAINCP)tmatrix_tsnl.h \ 421 434 $(SOPHYAINCP)tvector_tsnl.h generaldata.h \ … … 458 471 $(SOPHYAINCP)ndatablock.h \ 459 472 $(SOPHYAINCP)utilarr.h \ 473 $(SOPHYAINCP)randinterf.h \ 460 474 $(SOPHYAINCP)tmatrix_tsnl.h \ 461 475 $(SOPHYAINCP)tvector_tsnl.h \ … … 488 502 $(SOPHYAINCP)ndatablock.h \ 489 503 $(SOPHYAINCP)utilarr.h \ 504 $(SOPHYAINCP)randinterf.h \ 490 505 $(SOPHYAINCP)tmatrix_tsnl.h cimage.h \ 491 506 $(SOPHYAINCP)fioarr.h \ … … 512 527 $(SOPHYAINCP)machdefs.h \ 513 528 $(SOPHYAINCP)pexceptions.h \ 514 $(SOPHYAINCP)machdefs.h perandom.h \ 515 $(SOPHYAINCP)tvector.h \ 516 $(SOPHYAINCP)tmatrix.h \ 517 $(SOPHYAINCP)tarray.h \ 518 $(SOPHYAINCP)basarr.h \ 519 $(SOPHYAINCP)anydataobj.h \ 529 $(SOPHYAINCP)machdefs.h \ 530 $(SOPHYAINCP)srandgen.h \ 531 $(SOPHYAINCP)randinterf.h \ 532 $(SOPHYAINCP)anydataobj.h perandom.h \ 533 $(SOPHYAINCP)tvector.h \ 534 $(SOPHYAINCP)tmatrix.h \ 535 $(SOPHYAINCP)tarray.h \ 536 $(SOPHYAINCP)basarr.h \ 520 537 $(SOPHYAINCP)mutyv.h \ 521 538 $(SOPHYAINCP)timestamp.h \ … … 537 554 $(SOPHYAINCP)perrors.h \ 538 555 $(SOPHYAINCP)fmath.h \ 539 $(SOPHYAINCP)tvector.h \ 540 $(SOPHYAINCP)srandgen.h classfunc.h pemath.h 556 $(SOPHYAINCP)tvector.h classfunc.h 541 557 $(CXXCOMPILE) $(CXXTEMPFLG) -o $@ perandom.cc 542 558 … … 564 580 $(SOPHYAINCP)ndatablock.h \ 565 581 $(SOPHYAINCP)utilarr.h \ 582 $(SOPHYAINCP)randinterf.h \ 566 583 $(SOPHYAINCP)tmatrix_tsnl.h \ 567 584 $(SOPHYAINCP)tvector_tsnl.h \ … … 594 611 $(SOPHYAINCP)ndatablock.h \ 595 612 $(SOPHYAINCP)utilarr.h \ 613 $(SOPHYAINCP)randinterf.h \ 596 614 $(SOPHYAINCP)tmatrix_tsnl.h \ 597 615 $(SOPHYAINCP)tvector_tsnl.h \ … … 629 647 $(SOPHYAINCP)ndatablock.h \ 630 648 $(SOPHYAINCP)utilarr.h \ 649 $(SOPHYAINCP)randinterf.h \ 631 650 $(SOPHYAINCP)tmatrix_tsnl.h \ 632 651 $(SOPHYAINCP)tvector_tsnl.h generalfit.h \ … … 680 699 $(SOPHYAINCP)ndatablock.h \ 681 700 $(SOPHYAINCP)utilarr.h \ 701 $(SOPHYAINCP)randinterf.h \ 682 702 $(SOPHYAINCP)tmatrix.h \ 683 703 $(SOPHYAINCP)tmatrix_tsnl.h \
Note:
See TracChangeset
for help on using the changeset viewer.