제목: 간단한 자료분석 및 사용 변수 - 10/29 [] | 작성일: 2010. 10. 29. 15:55 |
[로그값]
print, sqrt(2) ;루트 사용
print, alog(10) ;로그 사용
print, alog10(10) ;자연로그
print, exp(10) ;exp 사용
print, abs(-300.) ;절대값
loga,b? (ex - log2,4)
print, alog(4)/alog(2) ;2를 밑으로 하는 로그 4
[복소수 표현]
; a+bi = complex(a,b)
a=complex(2,3)
b=complex(0,1) ; 앞 실수부, 뒤 허수부
; 복소수로 -1을 표현하기 위해서는?
print, sqrt(-1) ; -> 에러
print,sqrt(complex(-1,0)) ;0, i 라는 정상값 출력
real_part(complex(2,6)) ; -> 2
imaginary(complex(2,6)) ; -> 6
[난수 표현 (랜덤화)]
난수의 균일한 분포 (Uniform random num)
난수의 정규 분포 (Normal random num)
세상의 모든 노이즈는 가우시안 정규분포를 따른다. (고 믿는다)
사용예 randomu / randomn
x=randomu(a,b)
; a=아무 숫자를 넣으면 그 숫자부터 시작점이 된다.
; b=는 출력할 난수의 갯수
; 랜덤 숫자로 시작하고 싶으면 a 대신에 seed를 넣는다. (시간에 따라 값이 다르다)
; 시작점이 같으면 같은 분포의 무작위수를 지정함.
; 문제: 0.2의 폭을 가지는 sin함수 와 노이즈를 그려보시오
노이즈1, 노이즈3 = 변경 없음
노이즈2, 노이즈4 = *0.2 - 0.1
* 노이즈에 대한 정의
x=findgen(1000)/100-5
IDL> noise2=randomn(seed,100000L)
IDL> plot,x,histogram(noise2,binsize=0.01),psym=3
실생활에서 노이즈는 위와 같은 형태로 보여진다.
폭 값이 넓으면 넓을수록 노이즈가 크다는것을 의미한다.
[통계함수]
total() ; 합계
max(), min() ;최대값,최소값
mn=min(a,max=mx) ; 한화면에 최대,최소값 모두 표현)
x1=randomu(seed,30)
idx=where(x1 gt 0.5, complement=idx2)
; x1 값에서, 0.5보다 큰것 배열개념으로 idx에 넣고 0.5보다 큰것은 idx2에 넣는다.
결과
print, x1
0.632604 0.433747 0.334752 0.439307 0.949547 0.769299 0.146691 0.915130 0.664631
0.770765 0.528731 0.356477 0.126568 0.374747 0.453755 0.771425 0.0401956 0.170683
0.613833 0.832932 0.970320 0.689020 0.121284 0.694399 0.242527 0.981850 0.794981
0.872025 0.585486 0.755506
print, idx
0 4 5 7 8 9 10 15 18
19 20 21 23 25 26 27 28 29
print, idx2
1 2 3 6 11 12 13 14 16
17 22 24
[2차원 배열과 total]
b=findgen(4,4)
print, b
0.000000 1.00000 2.00000 3.00000
4.00000 5.00000 6.00000 7.00000
8.00000 9.00000 10.0000 11.0000
12.0000 13.0000 14.0000 15.0000
print, total(b)
120.000
print, total(b,1)
6.00000 22.0000 38.0000 54.0000
print, total(b,2)
24.0000 28.0000 32.0000 36.0000
help, total(b,1) ; 행/ 가로
<Expression> FLOAT = Array[4]
help, total(b,2) ; 열/ 세로
<Expression> FLOAT = Array[4]
total()/n_elements() ; 전체 값을, 배열의 갯수로 나눈 값 = 평균값 mean() 과 동일함
total(b)/n_elements(b)
7.50000
a=[2,1,3,5,6,4]
print,median(a)
print,median(a,/even) ;배열값이 짝수일 때, 짝수의 두개값의 평균값 구한다.
4.00000
3.50000
print,mean(a)
3.500000
[통계 함수#2]
mean() ;산술 평균 (n^1)
variance() ;분산 (n^2)
skewness() ;왜도 (n^3)
kurtosis() ;첨도 (n^4) ;뾰족한 정도
meanabsdev() ; 절대 평균편차
stddev() ; 표준편차
x=indgen(101)
a=mean(x)
b=variance(x)
c=skewness(x)
d=kurtosis(x)
print, a, b, c, d
50.0000 858.500 0.000000 -1.23570
[히스토그램 그리기]
* 참고로 히스토그램 함수도, 말그대로 함수 그 자체다.
사용 용도에 따라서, 일반 그래프 뿐만아니라 꺾은선 그래프, 막대 그래프 등을 그릴 수있다.
x=randomn(-1,10000)
h=histogram(x)
plot, h, psym=10
[순차 정렬, sort]
x=[1,5,9,-1,39,-32]
y=[20,1,15,9,0,-3]
a=sort(x) ;기본은 작은 값부터 높은 순서대로 배열 값의 순서
print, a
x1=x(a)
print, x1
5 3 0 1 2 4
-32 -1 1 5 9 39