728x90
목차

1. FileExist() - 파일의 상태 속성

2. FileGetSize - 파일의 크기

3. FileGetTime / FileSetTime - 파일의 시간정보

 

 

자기 자리에서 개인용 매크로를 사용할 때는 지금 상태에 대해 개발자가 100% 알고 있습니다.

그래서 큰 실수가 일어나지 않지만 같은 파일에 여러가지 프로토콜이 연결되면 복잡해지기 시작합니다.

특히 사용자가 직접 접근해서 수정하는 상황에서는 예상할 수 있는 일들이 너무 많아집니다.

그런 때 사용하는 파일의 현재 상태를 알아오는 FileExist()와 그외 명령어를 몇개 정리하겠습니다.

 

 

1. FileExist()

 

① FileExist의 의미와 매개변수

 

AttributeString := FileExist(FilePattern) : 파일이나 경로명인 "FilePattern"이 있는지를 확인하고 속성을 불러와 변수 " AttributeString"에 입력합니다.

  • FilePattern : 파일명이나 경로의 이름입니다. 전체 경로를 입력하지 않으면 지금 선택되어 있는 %A_WorkingDir%에 저장됩니다. 보통의 경우에는 %A_WorkingDir%은 메크로 실행파일이 있는 폴더입니다.
  • 반환값(AttributeString) : 한문자로 된 속성값이 반환됩니다. 만일 파일/경로가 없는 경우에는 빈문자가 반환됩니다. 문자 "False"가 아니라 빈문자가 되어 "False" 상태로 간주되는 것입니다. 사용하려면 논리 연산자나 if 같은 명령어와 조합해야 합니다.

 

② FileExist의 반환값

 

FileExist가 반환하는 값들은 정해져 있습니다.

파일의 상태에 따라서 다른 값을 불러옵니다.

Auto Hot Key 공식 포럼  FileExist() - Syntax & Usage | AutoHotkey (ahkscript.github.io) 에서 불러왔습니다.

 

  • R = READONLY(읽기 전용) : 파일의 속성에서 읽기 전용으로 되어 있는 경우입니다.
  • A = ARCHIVE(보관) : 파일에 저장되 있는 경우로 거의 대부분 속성을 가지고 있습니다.
  • S = SYSTEM(시스템) : 시스템 파일을 의미하고 "windows"등 설정폴더에 있는 .dat 파일등이 해당됩니다.
  • H = HIDDEN(감춤) : 숨김 속성을 가지고 있는 폴더입니다.
  • N = NORMAL(정상)
  • D = DIRECTORY(디렉토리) : 파일이 아닌 경로명일 때 사용됩니다.
  • O = OFFLINE(오프라인)
  • C = COMPRESSED(압축) : 압축파일인데 window가 압축한 zip 파일은 해당하지 않습니다.
  • T = TEMPORARY(임시)
  • X : 아무 속성이 없을 때 
  • 여러 개의 속성이 해당할 때는 여러단어를 반환합니다. RAH : 읽기전용의 숨겨진 파일

 

사용자가 파일에 임의로 변경한 내용이 아닌 파일의 속성 자체가 변해야 합니다.

 

 

③ 사용예시

 

^F3:: ;예시 1번 Windows 폴더의 시스템 파일입니다.

testnm := FileExist("C:\Windows\bootstat.dat")
msgbox %testnm%

return

^F4:: ;예시 2번

testnm := FileExist("abcd.exe")
if !testnm
{
msgbox "파일이 존재하지 않습니다."
}

return

 

사용결과 예시 1번의 경우 AS(보관파일, 시스템 파일)이 반환되고, 예시 2번은 존재하지 않는다는 매시지가 출력됩니다.

명령어의 동작은 심플하지만 사용할 수 있는 상황은 많습니다.

 

예시1의 결과 / 예시 2의 결과

 

320x100

 

 

2. FileGetSize

 

FileGetSize, OutputVar , [Filename], [Units] : 파일(Filename)의 크기를 읽어와서 변수( OutputVar)에 입력합니다.

  • OutputVar : 변수의 이름입니다. 여기에 숫자형식으로 결과가 입력이 됩니다.
  • Filename : 크기를 읽어오고 싶은 파일의 이름입니다. 경로명을 입력하지 않으면 %A_WorkingDir%(현재폴더)에서 파일명을 찾습니다. 아예 입력하지 않으면 %A_WorkingDir% 가장 앞의 파일을 가지고 옵니다.
  • Units : 출력을 하는 단위입니다. 입력하지 않으면 Byte 단위로 가지고 옵니다. K = 킬로바이트, M = 메가바이트입니다.

 

경로명을 입력할 경우 순수하게 경로의 크기인 0을 불러옵니다.

경로안에 접근하여 모든 파일의 합을 구하도록 해야합니다.

사용 예제는 심플합니다.

^F3:: ;

FileGetSize testnm, 예제 24.zip, k
msgbox %testnm%

return

 

 

 

3. FileGetTime / FileSetTime

 

파일에는 기록되고 읽은 시간 정보가 있습니다.

시간정보를 읽어오는 FileGetTime과 다시 쓰는 FileSetTime입니다.

Windows에서는 파일에 속성에 확인할 수 있습니다.

 

Windows에서 시간 보기

 

FileGetTime, OutputVar , [Filename], [WhichTime] : 파일이나 경로의 정보를 불러옵니다.

  • OutputVar : 변수의 이름입니다. 여기에 결과가 입력이 되는데 YYYYMMDDHHMIMSS로 입력되며 형식은 FileSetTime에서 변경할 수 있습니다. 운영체계에서 사용하는 시간을 불러옴으로 보통은 현지시간입니다.
  • Filename : 시간을 읽어오고 싶은 파일의 이름입니다. 경로명을 입력하지 않으면 %A_WorkingDir%(현재폴더)에서 파일명을 찾습니다. 아예 입력하지 않으면 %A_WorkingDir% 가장 앞의 파일을 가지고 옵니다.
  • WhichTime : 어떤 시간을 가지고 올지 결정하고 비어있으면 M입니다.
    M = 수정한 날짜/시간
    C = 만들어진 날짜/시간
    A = 엑세스한 날짜/시간

설명이 단순한 만큼 사용하는 예시도 간단합니다.

예시) FileGetTime, TestNm, 예제.txt, C

 

불러오는 파일이 있으니 쓸 수도 있습니다.

쓰게되면 원래 시간에 관한 정보가 없어짐으로 보통 특수목적으로 접근하여 자주사용하지는 않습니다.

 

FileSetTime , [YYYYMMDDHH24MISS], [FilePattern], [WhichTime], [OperateOnFolders], [Recurse] : 파일이나 경로명의 날짜시간 정보를 변경합니다. 추천할 수는 없지만 매개변수 전체를 입력하지 않아도 동작할 수 있습니다.

 

  • YYYYMMDDHH24MISS : 시간을 입력할 수 있습니다. 시간 형식에 FileSetTime, YYYY.MM.DD 이라고 입력하는 방식이 추천됩니다. 비어 있을 경우 OS가 알려주는 지금시간으로 입력됩니다. 참고로 1601년 미만은 지원하지 않는다고 합니다.
  • FilePattern : 파일명이나 경로명을 입력합니다. 경로명을 입력하지 않으면 %A_WorkingDir%(현재폴더)에서 파일명을 찾습니다. 이 자리를 비어두면 %A_WorkingDir% 가장 앞의 파일을 가지고 옵니다.
  • WhichTime : 어떤 시간을 가지고 올지 결정하고 비어있으면 M입니다.
    M = 수정한 날짜/시간
    C = 만들어진 날짜/시간
    A = 엑세스한 날짜/시간
  • OperateOnFolders : 동작방식을 결정합니다. 입력하지 않으면 0으로 처리됩니다.
    0 : 지정한 파일만 시간을 변경합니다.(디폴트)
    1 : 와일드 카드에 포함되는 모든 파일과 폴더가 처리됩니다.
    2 : 파일이 있는 지정 경로(폴더)의 시간만 변경합니다.
  • Recurse : 0으로 입력할 경우 입력한 경로(폴더)에만 해당하여 작동합니다. 1을 입력하면 하위폴더까지 모두다 변경합니다. 입력하지 않으면 디폴트는 0으로 되어 있습니다.

 

이 명령은 와일드 카드를 쓸 수 있는데 C:\내 문서\*.txt의 경우 와일드카드 *, 경로내의 모든 txt 파일로 인식합니다.

파일과 폴더의 경로명이 259문자를 뛰면 동작하지 않습니다. 그 파일을 무시하고 다음으로 넘어갑니다.

 

예제) FileSetTime, 20141105, C:\Temp\*.*, M : Temp 폴더의 모든 파일의 수정한 날짜를 2014년 11월 05일로 변경합니다. 시간은 입력하지 않아서 00시 00분 00초로 입력됩니다.

 

 

 

 

728x90
반응형
728x90

엑셀(EXCEL), 정규분포의 확률을 알려주는 NORM.DIST 함수는 무엇이고 사용하는 예시에 대해서 알아봅시다.

 

정규분포에서 분포값 대비 확률값(확률밀도)를 계산하는 NORM.DIST는 위에 먼저 포스트 했습니다.

확률밀도를 구하는 것도 어렵지만, 역함수를 계산하는 것은 더 어려울 수 있습니다.

확률로 분포를 구해주는 NORM.INV 함수에 대해서 알아보겠습니다.

 

 

1. NORM.INV 함수의 뜻

 

NORM.INV(probability,mean,standard_dev) : 지정된 평균(mean)과 표준편차(standard_dev)를 가지는 정규분포에서 확률(probability) 값을 가지는 누적 분포값을 구해줍니다.

  • probability : 분포상에서 확률입니다. 0 < P < 1의 범위여야 하고 넘어갈 경우 #NUM! 오류값이 출력됩니다.
  • mean : 전체 데이터(산포)의 평균입니다. 범위를 입력한다고 해서 자동으로 평균을 구해주지는 않고 계산해서 값을 입력해야 합니다.
  • standard_dev : 전체 데이터(산포)의 표준편차 입니다. 범위를 입력한다고 해서 구해주지는 않고 값으로 미리 계산하여 입력하여야 합니다. 0보다 큰 값이어야 합니다.

 

산포 그래프

 

표준분포에서 누적 확률 밀도는 밀도 그래프 상에서 왼쪽 끝(- ∞)에서 분포값까지 면적입니다.

NORM.INV는 면적이 입력한 확률(probability)이 되는 "분포값"을 계산해 줍니다.

 

 

정규분포가 평균을 기준으로 좌우대칭인 것을 이용해서 확률값을 오른쪽과 왼쪽일때 계산해서 입력해야 합니다.

따라서 확률이 0.5인 경우 이 함수에서는 언제나 평균(mean) 값입니다.

 

 

320x100

 

 

2. NORM.INV 함수의 사용법

 

예를 들어보겠습니다. 중심이 10이고 표준편차가 1.5인 어떤 제품이 있다고 보겠습니다.

이 제품의 불량률을 95%로 잡으려고 한다고 합시다.

전체가 5% 발생하려면 - 방향에서 2.5%와 + 방향에서 2.5%가 불량이 발생하면 됩니다.

 

=NORM.INV(0.25,10,1.5) 라고 입력할 경우 값은 8.988

=NORM.INV(0.975,10,1.5)라고 입력할 때 12.940이 됩니다.

따라서 스펙은 8.988 ~ 12.940으로 설정하면 보통은 95%의 불량이 발생할 꺼라고 예상할 수 있습니다.

 

이렇게 분야에 따라서는 상당히 활용법이 다양합니다.

 

 

3. 표준정규분포일 경우에 사용하는 NORM.S.INV 함수

 

표준정규분포는 정규분포 중에 평균(mean) 0이고, 표준편차(standard_dev)가 1인 경우를 말합니다.

정규분포에서 대표성을 가지기 때문에 이 함수를 따로 지원합니다.

 

NORM.S.INV(probability,mean,standard_dev) : 평균(mean)이 0이고 표준편차(standard_dev)가 1인 표준정규분포에서 확률(probability) 값을 가지는 누적 분포값을 구해줍니다.

  • probability : 분포상에서 확률입니다. 0 < P < 1의 범위여야 하고 넘어갈 경우 #NUM! 오류값이 출력됩니다.

 

 

 

 

728x90
반응형
728x90

행렬의 의미와 몇가지 특별한 행렬에 대해서는 포스팅을 해두었습니다.

수학에서 수를 2차원으로 전개하는 방법인 행렬(MATRIX)와 특별한 행렬들(단위행렬, 역행렬, 전치행렬)

 

 

행렬을 이용하면 같은 속성을 가지는 수를 모아서 배열해서 볼 수 있습니다.

이렇게 배열한 후에 한번에 연산하는 방법에 대해서 알아보겠습니다.

 

① 행렬의 덧셈과 뺄셈

 

덧셈과 뺄셈은 그냥 똑같이 계산하면 됩니다.

다만 행렬의 크기가 같아야 합니다.

(A+B)mn  = [Amn + Bmn]

 

행렬의 덧샘

 

 

② 실수곱(스칼라 곱)

 

행렬에 실수를 곱하는 것을 스칼라 곱이라고도 합니다.

이경우도 행렬의 모든 구성요소에 똑같은 숫자가 곱해지면 됨으로 어렵지 않습니다.

 

k · A  = [k · Amn]

 

행렬의 실수곱

 

 

③ 행렬곱의 곱

 

행렬끼리 곱할때는 규칙이 있습니다.

많은 수학의 공식중에서도 상당히 혼돈이 생기는 구성으로 학생때는 더듬거리면서 공부한 기억이 있습니다.

 

우선  곱셈의 앞에 있는 행렬의 "열"과 뒤에 있는 행렬의 "행"이 같아야 합니다.

이렇게 연산된 결과는 앞에 있는 행렬의 "행"과 뒤에 있는 행렬의 "열"이 됩니다.

 

Amn x Bnl = ABml

 

그리고 앞에 있는 행의 구성과 열의 구성이 곱해서 더해집니다.

말로하면 어렵고 손으로 쓰면서 봐야 이해가 됩니다.

예를 들어,

 

간단한 행렬만해도 상당히 길어집니다.

2 * 3의 행렬과 3 * 2이 곱해져서 2 * 2 행렬이 된 것을 볼 수 있습니다.

행렬곱의 각 요소를 나타낼 수도 있습니다.

 

 


 

행렬의 곱은 복잡해보이지만 백터연산, 좌표계연산등 다양한 분야에서 쓰입니다.

실제로 적용이 많이 되는 공식임으로 설사 수식을 일일히 사용하지 않아도 이 참에 알고 있는게 좋습니다.

 

728x90
반응형
728x90

행렬(Matrix)은 숫자들을 직사각형 모양으로 배열한 상태를 말합니다.

이렇게 숫자들을 배열함으로 인해 여러가지 수들을 규칙적/구조적으로 연산할 수 있습니다.

수학에서는 행렬을 사용해서 이차원적으로 배열한 숫자를 다루는 분야에는 대표적으로 선형대수학이 있습니다.

그리고 여러 개의 숫자를 사용하는 특성은 물리학, 생물학등 거의 모든 분야의 과학과 공학에서 유용하게 응용됩니다.

 

행렬의 구성

 

행렬은 가로 줄인 행(Row)과 세로 줄인 열(Column)로 구성됩니다.

행은 수평 방향으로 배열된 숫자들의 모음이며, 열은 수직 방향으로 배열된 숫자들의 모음입니다.

그러니까 가로줄의 갯수가 행이고 세로줄의 수가 열입니다.

직사각형모양임으로 모든 숫자가 자신의 행과 열을 가지고 있고 주소처럼 사용할 수 있습니다.

(예 : 3행의 2열)

행렬을 표기할 때도 (행)(열)을 사용합니다. 5X4 행렬은 A54로 표기됩니다.

 

320x100

 

행렬은 자유도가 높은 배열이라 여러가지로 만들 수 있습니다.

그래도 몇가지 특정한 행렬구성에는 이름이 붙기도 하는데 그것들을 알아보겠습니다.

 

① 정사각행렬(Square Matrix) :

 

행의 수와 열의 수가 같은 행렬입니다.

특별한 수식을 수행할 때 정사각행렬을 사용해야 할 때가 있습니다.

아래 소개되는 행렬은 모두 정사각행렬을 기준으로 합니다.

 

 

② 단위행렬(identity matrix) : 

 

정사각행렬의 대각성분만 1이고 나머지는 0인 행렬입니다.

행렬곱을 수행할 똑같은 행렬을 반환합니다.

I1, I2, In과 같이 표기합니다.

 

5x5 단위행렬

 

 

③ 역행렬(Inverse Matrix) : 

 

곱했을때 단위행렬이 되는 행렬을 말합니다.

역행렬이 존재하지 않는 경우도 있습니다.

 

b는 a의 역행렬

 

 

③ 전치 행렬(Tanspose) :

 

정사각행렬이 A가 있을 때 대각성분을 기준으로 대칭인 행렬입니다.

A = AT 라고 표기합니다.

 

전치 행렬

 

 

④ 영행렬 (Zero Matrix) : 

 

모든 구성요소가 0인 행렬을 의미합니다.

 

 

 

728x90
반응형
728x90

구글 크롬은 다양한 경우에 강제로 종료가 됩니다.

경고하는 그림이 등장하면서 동작을 하지 않거나 페이지에 들어갈 수 없거나 강제 종료가 됩니다.

 

우선 강제종료가 되는 경우에 크롬의 로그를 확인할 수 있습니다.

주소창에 "chrome://crashes/"를 입력하면 비정상 종료의 리스트를 확인할 수 있습니다.

 

비정상 종료

 

화면의 오른쪽에 "개발자 세부정보 표시"를 선택하면 로그기록을 볼 수 있습니다.

"로컬 비정상 종료 컨텍스트"는 크롬이 남긴 로그로 원인을 예상할 수도 있지만 쉽지는 않습니다.

크롬이 워낙 많은 프로그램이 충돌할 수 있어 원인을 알기는 어렵습니다.

크롬이 종료될 때 대표적인 조치방법을 알아보겠습니다.

 

 

① 쿠키 및 데이터 지우기

 

크롬에서는 생각보다 많은 데이터를 저장하고 있습니다.

장기간 쌓이면 꽤 많은 용량을 차지하는데 그뿐아니라 특정 페이지를 들어갈 때 영향을 줄 수 있습니다.

그래서 이 기능은 문제가 없어도 정기적으로 실행해 주는게 좋습니다.

빈 크롬의 창에서 "점 세개" - [설정] - [개인 정보 보호 및 보안] - [인터넷 사용 기록 삭제]를 클릭합니다.

 

설정

 

 

② 다운로드 목록 비우기

 

다운로드 목록이 있습니다. 파일이 있든 없든 목록은 유지되는데요.

이 목록이 지나치게 길거나 하면 크롬이 끊기거나 페이지 이동에 영향을 줍니다.

개인적인 경험으로 생각보다 높은 확률로 일이 해결되는 방법입니다.

빈 크롬의 창에서 "점 세개" - [다운로드] - [모두 삭제]를 클릭합니다.

혹은 주소창에 "chrome://downloads/"를 입력합니다.

이유도 없이 자주 느려진다면 다운로드 목록을 꼭 삭제해 보세요.

 

다운로드 목록

 

③ 확장프로그램 관리

 

크롬을 쓰다보면 확장 프로그램을 설치하고는 합니다.

이 프로그램들은 거의 모든 상황에서 영향을 주기 때문에 가능한 사용하지 않으면 꺼두는게 좋습니다.

저는 귀찮아서 거의 항상 켜두고 있습니다.

빈 크롬의 창에서 "점 세개" - [확장 프로그램] - [확장 프로그램 관리]를 클릭합니다.

프로그램 관리창에서 하나씩 껏다 켜면서 크롬이 느려지지는 않는지 충돌이 일어나는지 실험해 봅니다.

충돌을 일으키는 프로그램은 지우는게 좋습니다.

 

확장프로그램 관리창

 

320x100

 


 

크롬이 강제종료하는 주된 원인은 몇가지 있습니다.

 

  • 확장 프로그램 충돌 : 구글 크롬에 설치된 확장 프로그램이 충돌을 일으키는 경우이고 특히 개인이 제작한 프로그램이 문제를 자주 만듭니다.
  • 시스템 리소스 부족 : 메모리의 성능이나 CPU의 리소스가 부족한 경우입니다. 이럴때는 강제로 종료되거나 다운할 수 있습니다. 너무 많은 탭을 사용하지 않는지 동작시키고 있는 영상이나 스크립트가 많은지 살펴봐야 합니다.
  • 크롬 자체의 문제 : 크롬도 버그가 있을 수 있습니다. 특히 하드웨어나 드라이버랑 충돌하는 경우는 처치가 곤란합니다. 크롬을 업데이트하거나 재설치하여 해결하고 이 경우에는 크롬의 사용자체를 검토해야 합니다.
  • 악성 코드 또는 바이러스 : 악성 코드는 여러가지 프로그램에 작용하지만 특히 인터넷 브라우져들에 악영향을 줍니다.
    컴퓨터가 악성코드가 있으면 크롬에 치명적인 문제를 발생시킬 수도 있고 보안에도 문제가 있으니 바로 해결해야 합니다.
728x90
반응형
728x90
목차

1. 휴지통 기능의 역할

2. 휴지통 보이게 하기/안보이게 하기

3. 휴지통에 기본 설정

 

1. 휴지통 기능의 역할

 

Windows 시리즈에는 휴지통이라는 기능이 있습니다.

파일이 삭제될 때 일종의 대기상태로 바로 지워지지 않고 완전히 지우기 전에 대기상태입니다.

휴지통은 사용자가 파일을 삭제할 때 일종의 버퍼로 안전하게 보관하는 기능을 합니다. 

 

휴지통

 

 

아무 파일도 지워지지 않고 빈상태면 Windows의 휴지통 아이콘은 비어있지만 하나라도 들어있으면 차있는 모양이됩니다.

그리고 아직 이 상태에서 휴지통안에 있는 파일은 복구가 가능합니다.

그래서 실수로 Delete키를 누르는등 삭제를 한 파일은 휴지통에서 복구가 가능합니다.

 

휴지통 내에서 복원할지 삭제 할 지 결정합니다.

 

 

2. 휴지통 보이게 하기/안보이게 하기

바탕화면에 휴지통이 보이지 않을 때가 있습니다.

바탕화면에서 배경화면을 오른쪽 클릭하고 "개인 설정"에 들어갑니다.

[테마] - [바탕 화면 아이콘 설정] - [휴지통]을 선택하면 바탕화면에 휴지통 아이콘이 들어나서 편하게 사용할 수 있습니다.

 

 

테마 설정하기

 

320x100

 

 

3. 휴지통에 기본 설정

 

휴지통에는 몇가지 설정할 수 있는 기능이 있습니다.

사용자는 메모리가 지나치게 낭비되는 것을 막거나 아니면 파일을 보호하는 방향으로 선택할 수 있습니다.

 

① 휴지통의 크기설정

 

휴지통 아이콘을 오른쪽 클릭하여 속성을 클릭하여 "휴지통 속성 창"을 엽니다.

이 설정을 통해 휴지통이 얼마나 많은 공간을 차지하는지를 제어할 수 있습니다.

드러이버 별로 따로 설정할 수 있고 공간을 넘기면 오래된 파일 순서대로 지워집니다.

"바로 제거하기를 선택"하면 그런 것없이 바로 지웁니다.

 

휴지통 속성

 

 

② 시간이 지난 파일 삭제하기

 

용량이 어느정도 되지 않아도 오래된 항목을 지울 수 있습니다.

[Windows 설정] - [저장소] - [저장소 센스 구성 또는 지금 실행] - [임시 파일] - "다음 기간 이상 휴지통에 있는 파일 삭제"

옵션이 있습니다.

여기서 휴지통에 오래있던 파일이 지워지게 할 수 있습니다.

디폴트는 30일(한달)로 설정되어 있는 부분이 주의가 필요합니다.

 

저장소 설정

 

 

728x90
반응형
728x90

정규분포는 자연을 가장 잘 묘사고 있는 분포라고 불리면서 다양한 분야에서 이용됩니다.

정규 분포에 대해 의미와 활용에 대해서는 아래 링크의 포스팅에서 다루어 보았습니다.

 

세상을 설명하는 정규분포(Normal distribution), 도수분포로 보는 통계학의 지표이자 분석을 하는 유용한 도구

 

정규분포의 의미와 뜻을 알더라도 각 분야에서 활용을 해야 의미가 있습니다.

활용을 하기 위해서는 계산을 해야 하는데 아무리 표준화가 잘 된 공식이라도 숫자로 계산하는 것은 어렵습니다.

간략화가 잘된 정규분포 공식도 EXP가 포함되 직관적으로 알기 어려운 형태입니다.

 

<정규분포의 정규 밀도 함수>

x = 값, &mu; = 평균, &sigma; = 표준편차

 

게다가 우리가 구하는 확률(확률밀도)은 적분하여 계산합니다.

정규분포 함수 f(x)가 있을 때 확율밀도함수 P와 누적분포함수 C(x)는 아래와 같습니다.

 

확율밀도함수와 누적분포함수



안그래도 복잡한 공식에 적분 형식이라 더욱 알기 어렵습니다.

오늘은 평균과 표준편차만 있으면 공식을 전개하여 계산해주는 NORM.DIST 함수에 대해서 알아보겠습니다.

 

 

1. NORM.DIST 함수의 의미

 

NORM.DIST(x,mean,standard_dev,cumulative) : 지정된 평균(mean)과 표준편차(standard_dev)를 가지는 정규분포에서 x위치의 확률분포를 계산해 줍니다.

  • x : 분포를 구하려는 값입니다.
  • mean : 전체 데이터(산포)의 평균입니다. 범위를 입력한다고 해서 자동으로 평균을 구해주지는 않고 AVERAGE 함수로 계산해야 합니다.
  • standard_dev : 전체 데이터(산포)의 표준편차 입니다. 범위를 입력한다고 해서 구해주지는 않고 값으로 미리 계산하여 입력하여야 합니다.
  • cumulative :함수의 모드를 결정합니다. True일 때는 누적분포함수를 False일 때는 확률밀도함수를 구합니다.
    누적분포함수와 확율밀도함수의 차이는 따로 포스팅했습니다.

    정규분포에서 풀이 결과에 해당하는 확률밀도함수와 누적분포함수에 개념을 알아보자

 

예을들어 평균이 0, 표준편차가 1인 표준 정규분포에서 1의 위치의 확률 밀도를 계산할 수 있습니다.

예시) =NORM.DIST(1,0,1,TRUE) → 결과 : 0.841345

 

320x100

 

2. 함수의 사용법

 

일상에 데이터를 히스토그램(산포분포도)로 많이 나타냅니다.

이 때 정규분포화를 시키면 그래프가 보기좋아지는데 통계툴에서 자주 사용하는 방법입니다.

엑셀에서는 NORM.DIST함수를 통해서 이게 가능합니다.

 

분포 그래프 그리기

 

실질 적으로 관측된 DATA는 막대그래프의 Frequency 함수를 사용해서 히스토그램으로 그렸고,

정규분포 곡선은 NORM.DIST 함수를 사용해서 분산형으로 그렸습니다.

이렇게 그래프를 조합하면 좀 더 분석이 편한 그래프가 그려지게 됩니다.

 

예를 들어 위에 그래프는 강수량임으로 비가 가끔 많이 내리기도 하지만 일반적으로 적게 내리는 데 집중되어 있다 

(확율적으로 상방보다 하방에 집중되어 있습니다.)

따라서 폭우 대책은 상습침수지역에 집중하고, 가뭄에 대비하여 전국적인 대책이 필요하다는 결론을 내릴 수 있습니다.

※ 이건 예시일 뿐이고 실 정책결정에는 인명이 걸린 일인만큼  보다 다양한 통계와 의사결정이 필요합니다.

 

 

3. 표준정규분포를 계산하는 NORM.S.DIST 함수

 

평균이 0이고 표준편차가 1인 표준정규분포에 대해서는 따로 함수가 하나 더 존재합니다.

물론 위의 NORM.DIST 함수를 사용해도 결과는 같습니다.

자주 사용하는 사람에 대해서 특별히 제공하는 함수라고 보면 됩니다.

 

NORM.S.DIST(x,cumulative) : 평균이 0이고 표준편차가 1인 가지는 표준정규분포에서 x위치의 확률분포를 계산합니다.

  • x : 분포를 구하려는 값입니다.
  • cumulative :함수의 모드를 결정합니다. True일 때는 누적분포함수를 False일 때는 확률밀도함수를 구합니다.
    누적분포함수와 확율밀도함수의 차이는 따로 포스팅했습니다.
728x90
반응형
728x90

정규분포는 자연계에 존재하는 각종 현상의 산포를 가장 잘 보여주는 지표라고들 부릅니다.

x = 값, μ = 평균, σ = 표준편차 일때 정규분포 함수 그래프의 공식은 아래와 같습니다.

 

정규분포 함수

 

정규분포 함수를 적분하면 확률(확률밀도)를 구할 수 있습니다.

확률을 풀이하는 여러가지 해 중에 유용한 것이 확률밀도함수와 누적분포함수입니다.

그 정의에 대해서 알아보면,


확률 밀도 함수(確率密度函數, probability density function : pdf)는 확률 변수의 분포를 나타내는 함수로, 정규분포함수 f(x)와 구간 [a, b]에 대해서 확률 변수 P가 구간에 포함될 확률 P(a≤X≤b)는

가 됩니다. 이때, 누적분포함수(累積分布函數, cumulative distribution function : cdf)

가 됩니다.

 

(출처 : 위키백과)


 

이 공식은 개념을 설명하기 위한 것이고 밀도 함수에 대한 다른 해석도 많습니다.

그 의미는 하나이기 때문에 좀 쉬운 공식을 찾아 가져와서 설명했고 좋은 개념입니다.

그래도 공식만으로는 알기 어려울테니 풀어서 추가로 더 설명드리겠습니다.

 

① 확률밀도함수(Probability Density Function)

 

확률밀도함수는 a와 b사이의 확률이고 보통은 아주 좁은 구간 혹은 순간의 확률을 이야기합니다.

아래 그림으로 보면 아래 -1일 때 확률 밀도는 0.24197이 됩니다.

확률밀도함수는 엄밀한 정의로는 미분가능한 연속적인 구성에서만 정의되는 개념입니다.

 

확율밀도함수 P

 

이렇게 일상에서 확률이라고 말하는 것은 보통 확률 밀도 값입니다.

확률밀도함수는 확률분포함수와 많이 닳은 개념입니다.

 

잠깐 확률분포함수 이야기를 하겠습니다. 사건이 비연속적인 분포를 이산확률분포라고 합니다.

이산확률분포에서 확률값 = 확률분포함수이고, 일상에서는 자주 사용이 됩니다.

예1) 동전을 5번 던져서 3번 앞면이 나올 확률(밀도함수값)은 0.3125(31.25%)입니다.

예2) 동전을 5번 던져서 3번 혹은 4번 앞면이 나올 확률은 0.46875(46.87%)입니다.

확율밀도함수는 이것에 연속 개념이 추가된 것이라고 보면 좀 이해하기 쉬울 것입니다.

 

 

320x100

 

 

② 누적분포함수(Cumulative Distribution Function)

 

분포에서 특정값보다 작거나 같은 값들의 범위를 의미합니다.

아래 예를 보면 C(-1) = -1 이하의 모든 범위 : -∞ ~ -1의 면적이 됩니다.

 

누적분포함수 = 값보다 작은 모든 영역의 면적

 

 

누적분포함수를 연산하여 다양한 경우의 수를 뽑을 수 있기 때문에 수학적인 영역에서 자주 사용됩니다.

정규분포는 평균을 기준으로 좌우대칭이고 전체 면적을 다 합치면 1(100%)가 되는 특성이 있습니다.

때문에 C(-1) : -1보다 작을 확률을 알면, 1보다 큰 확률과 같습니다.

또 1(100%)에서 C(-1)를 빼면 -1보다 큰 영역의 면적(확률)과 같습니다.

응용하기 좋아서 통계학의 확률론 뿐만아니라 다양한 곳에서 등장하는 개념입니다.

 

728x90
반응형
728x90

다른 언어를 사용한 프로그램도 그렇겠지만, 사용하다보면 따로 기록해야 하거나 그 기록을 불러와야 합니다.

주로 메모장(txt, ini)등을 사용하는 편이 쉽기도 하고 필요한 메모리도 가벼워 선호하는 방식입니다.

외부 파일에 접근하여 내용을 잃거나 쓰는 FileOpen 명령어에 대해서 알아보겠습니다.

 

 

1. Fileopen의 뜻과 접근함수 

 

FileOpen(Filename, Flags , [Encoding]) : 파일을 열어서 특정내용을 읽거나 파일에 새 내용을 기록하는 기능을 지원하는 명령어입니다.

  • Filename : 접근할 파일의 경로 + 이름입니다. 이름만 입력할 경우 지금 메크로가 실행되고 있는 경로인 "A_WorkingDir"에서 파일을 찾습니다.
  • Flags : 파일에 접근하는 방식을 결정합니다. 읽을 때는 "r"(표준입력)을 쓸때는 "w"를 사용합니다.
  • Encoding :파일에 텍스트 입출력에 사용될 코드 페이지입니다.(UTF-8, UTF-16), 입력하지 않으면 A_FileEncoding의 값이 입력되는데 보통 따로 조작하지 않아도 기본 앤코딩 값이 입려되어 있습니다.
  • "변수명" := FileOpen(Filename, Flags , [Encoding])
    형식으로 사용합니다. 한번 파일을 오픈하여 사용하기 위해 메소스를 호출할 때는 변수명으로 사용합니다.

 

접근 모드가 다양하게 지원됩니다.

접근하는 방식은 Flag에 무엇을 입력하냐에 따라 달라집니다.

각 모드에 대해서 알아보겠습니다. 괄호 안()은 십진수와 16진수 표기법입니다.

 

<<접근 모드>>

 

  • r(0, 0x0) : Read를 의미하며 읽기 기능들을 사용할 수 있습니다. 파일이 해당 경로에 없으면 실패합니다.
  • w(1, 0x1) : Write를 의미하며 쓰기 기능들을 사용할 수 있습니다. 파일이 없으면 새로 생성하며, 있을 경우 덮어쓰기 함으로 주의가 필요합니다.
  • a(2, 0x2) : Append를 의미하며 쓰기 기능들을 사용할 수 있습니다. 파일이 없으면 새로 생성하고 있으면 기존 파일의 끝으로 이동합니다.
  • rw(3 0x3) : Read / Write를 의미하며 쓰고 읽는 기능들을 사용할 수 있습니다. 파일이 없으면 새로 생성하고 파일이 있는 경우 내용을 덮어 쓰니 주의가 필요합니다.
  • h : Filename이 객체안에 사용하는 핸들임을 나타내어 길이나 상태를 점검할 수 없고 따라서 Close가 동작하지 않습니다. 이동하거나 지워질 수 있는 파일에는 사용이 안할 것이 권장됩니다.

 

 

2. File 형식에 사용할 수 있는 매소드

 

예시) ex_file = fileopen("C:\dou", "r)

 

이럴때 변수명 ex_file은 파일객체가 되며, FlieOpen로 호출된 파일객체는 쓰고 읽기 위한 인터페이스가 제공됩니다.

인터페이스를 사용하면 문서작업을 직접할 때와 마찬가지로 파일을 쓰고 읽을 때 포인터가 돌아다니게 됩니다.

 

방금쓴 글자 뒤에 포인터가 위치합니다.

 

파일을 오픈하면 파일의 가장 처음에 포인터가 있습니다.

기능들을 한번에 여러개 사용할 경우에는 포인터가 옮겨진 위치를 유의하면서 사용해야 합니다.

 

<<메소드>>

 

  • Read : 지금 포인터 위치에 뒤에서 부터 파일에 내용을 읽습니다. 다 읽고나서 그 뒤문자로 포인터가 이동하는데 이 경우는 맨 마지막이 됩니다.
  • ReadLine : 지금 포인터 위에서 뒤에 있는 문자열을 한줄 읽어입니다. 사용한 후에는 포인터가 다음으로 합니다.
  • Write : 지금 포인터 위치에서 내용을 쓰고 포인터는 내용의 뒤로 이동합니다.
  • WriteLine : 지금 포인터 위치 다음 줄에 내용을 쓰고 포인터는 내용의 뒤로 이동합니다
  • Seek : 포인터가 해당 숫자 만큼 이동합니다.

 

320x100

 

 

3. 사용 예시

 

바탕화면에 있는 LIST.txt의 내용을 읽어 오는 예시를 작성하겠습니다.

 

 

^F3:: ;Ctrl + F3 키를 단축키로 설정했습니다.

file := FileOpen("C:\Users\jong\Desktop\LIST.txt", "r") ;경로의 파일을 읽기로 열었습니다.

newstr := file.Readline() ; 첫 줄의 내용을 newstr1 에 입력합니다.
newstr2 := file.Read() ; 그 뒤에 내용을 newstr 에 입력합니다.

msgbox, %newstr% `n`n %newstr2%

file.close ;파일을 닫았습니다.

 

 

결과는 MSGBOX로 출력했습니다. 

원본 파일에서 ReadLine으로 첫줄을 불어온 후 Read로 나머지를 불러 왔습니다.

 

 

 

 

 

 

728x90
반응형
728x90

가상메모리(Virtual memory)는 주기억장치에서 모자란 메모리를 보조기억장치의 공간을 활용하여 사용하는 것입니다.

Windows에서는 기본적으로 어느정도 사용하는 것으로 설정이 되어 있습니다.

 

하지만 Windows10에서 매뉴얼로 가상메모리의 설정이 필요한 경우에는 아래와 같은 순서로 사용합니다.

 

① Window 버튼에 오른쪽 클릭해서 "설정"으로 들어갑니다.

② 아래 "정보" 탭을 선택한 후에 "고급 시스템 설정"을 클릭합니다.

 

고급시스템 설정 들어가기

 

③ 시스템 설정 "고급 탭"에서 성능의 "설정" 을 클릭합니다.

④ 다시 성능 옵션의 "고급 탭"에서 가상 메모리의 "변경"을 클릭합니다.

 

가상 메모리 설정으로 들어가기

 

⑤ 가상 메모리 창에서 "모든 드라이브에 대한 페이징 파일 크기 자동 관리"에 체크를 해제하고,

"사용자 지정 크기"에서 숫자를 입력합니다.

혹은 아래 "페이징 파일 없음"을 클릭하면 가상메모리를 사용하지 않습니다.

 

여기서 설정합니다.

 

 

320x100

 

 

<<가상 메모리를 사용하는 이유>>

 

요즘은 꽤 많은 분들이 가상 메모리에 대해서 잘 이해하고 있습니다.

무조건 많이 쓰거나 적게 쓴다고 좋은 것도 아니고, 자신이 사용하고 있는 사양에 맞게 사용해야 합니다.

가상 메모리를 사용하는 이유를 대표적으로 꼽자면,

 

  1. 메모리를 확장 가능합니다. 물리적인 메모리를 늘리려면 비용이 발생하는데 가상 메모리는 가지고 있는 장치를 SW에서 재구성 함으로 비용없이 사용가능합니다.
  2. 효율적으로 사용이 가능합니다. 실행 중이지만 지금은 사용 중이지 않는 프로그램의 메모리를 보조기억장치로 옮겨 주기억장치의 동작을 원활하게 하여 프로그램의 성능을 향상시킵니다.
  3. 다중 프로그램 실행시 특히 가상 메모리의 효과가 올라갑니다. 여러개의 프로그램을 돌아가면서 사용하며 임시 장치에 계속 저장함으로 충돌을 방지할 수 있습니다.
  4. 편리하게 사용합니다. 주 메모리 공간을 물리적으로 교체하는 수고와 신경을 들이지 않고 편리하게 사용하며 특히 사용자의 경험과 관리 능력에 따라서 시스템 리소스를 효율적으로 배치할 수 있습니다.

 

동작 알고리즘을 이해하고 잘 사용하면 보기보다 큰 효율을 낼 수 있습니다.

단점으로는 하드디스크등 메모리를 활용함으로 쓸 수 있는 저장공간이 떨어지고,

결국은 비용을 들여서 주기억장치를 많이 확보하는 것이 더 좋습니다.

 

 

728x90
반응형

+ Recent posts