본문 바로가기

분류 전체보기

(284)
해밍 거리(Hamming Distance)와 에러 검출/보정 (feat. 해밍 코드) 해밍 거리에 대해서 배울 때, d 비트의 에러 검출을 하려면 최소 해밍거리 $d_{min} = d + 1$이고(최소 해밍거리 $d_{min}$일때 에러 검출은 d-1개까지 가능하고), d 비트의 에러 보정이 가능하려면 최소 해밍거리 $d_{min}=2d+1$이 되어야 한다고 한다. 이 글에서는 왜 이렇게 되는지에 대해 설명한다. 해밍 거리 (Hamming Distance) 두 비트열 c1과 c2에 대한 해밍 거리는, 두 비트열의 같은 위치에 있는 서로 다른 비트의 개수이다. 헷갈리는 말이지만, 예를 들어보면 쉽게 이해될 것이다. 예를 들어 "111"과 "110"의 해밍거리는 1이다. 마지막 비트에 있는 값이 다르기 때문. d(111,110) = 1 d(111,101) = 1 d(111,001)=2 d(1..
조건부 확률을 확실하게 알아보자. 우도(가능도)와의 차이를 알아야한다. 여러 번 공부해도 자꾸 까먹고 헷갈리는 게 조건부 확률이다. 왜일까? 조건부확률이, 우리가 가지는 상식에 반하는 성질이 있어서 이기도하지만, 확실하게 개념을 못 짚어서가 대부분이다. --- 먼저 공식부터 다시 짚어보면, $ P(A|B) = \frac {P(A)P(B|A)} {P(B)}$ 외우는 것은 아비=아바/비 좋은 암기방법!! ㅎ 이를 위해, 원래의 공식은 일반적으로 분자에 있는 수식을 P(B|A)P(A)라고 적는데 반해, 여기서는 그 순서를 바꿔서 P(A)P(B|A)라고 했다. 곱셈이기에 순서를 바꿔도 무방하기에. --- 공식에 대해 설명하기 전에 확률과 우도의 개념부터 짚어보고 가겠다. (조건부확률을 이해하기 위한 목적에 포커싱을 둬서) 확률 모수가 있을 때, 어떤 현상이 벌어질 수의 비이다. 즉..
ITSM ITSM(IT Service Management) IT서비스 수준관리를 위한 프레임워크 정의 - IT서비스를 이용하는 고객과 서비스 제공자 간에 서비스 수준을 협의하여, 서비스 수준 품질을 통제/관리/유지하기 위한 IT 서비스 관리 기법 - 고품질의 IT 서비스 지원/구현을 위한 각 프로세스/조직/기술 제공 프레임워크 - IT 업무 및 관련 절차를 기술 중심의 운영 또는 관리에서 벗어나 서비스화 및 비즈니스 중심으로 재설계하여 협의된 서비스 수준(SLA)에 맞는 IT 서비스를 제공하는 것 특징 (네트워크 관리와 IT시스템 관리와 같은 더 기술 지향적인 IT관리와 달리) 고객의 요구와 IT 서비스에 초점을 맞추고 지속적인 개선을 강조함으로써 프로세스 접근을 채택 필요성 - IT의 비지니스 기여도 향상: 기..
양자 컴퓨터 참조: www.krnet.or.kr/board/data/dprogram/2350/C1-1_%C7%E3%C1%D8.pdf 정의 양자역학의 주요원리(중첩성, 얽힘현상, 관측의 영향 등)를 기반으로 작동하는 컴퓨터 암호해독, 데이터검색 등 기존의 폰노이만식 컴퓨터로는 어려운 계산을 수행할 수 있음 양자정보이론을 이용하여 초고속 연산이 가능한 미래형 특수목적(암호해독, 데이터 검색 등) 컴퓨터 양자 컴퓨터에 적용되는 대표적인 양자역학 성질 성질 설명 적용/효과 중첩성(Superposition) 양자의 상태가 확률적으로 여러 개의 상태로 존재한다는 성질 연산속도 대폭 향상 얽힘성(Entanglement) 한 쪽 양자의 성질이 결정되면 다른 쪽의 상태도 순간적으로 정해져 버리는 성질 원격 이동성 관측의 영향(Eff..
06. 이산 푸리에 변환 (DFT, Discrete Fourier Transform) 지금까지 다뤘던 푸리에 변환은 연속신호에 대한 변환이었다. 연속 시간에 대한 신호와 연속된 주파수에 대한 변환이었다. 연속 시간이라는 것은 시간과 시간 사이에 빈틈이 없다는 것이다. 주파수 연속이란 것도 마찬가지로 주파수와 주파수간의 간격이 없이 어떠한 주파수라도 있다는 것이다. 반면에, 이산 신호(Discrete Signal)라는 것은 값이 드문 드문 있다는 것이다. 이산(離散) 신호는 시간과 시간 사이가 연속이 아닌, 간격이 있는 신호를 의미한다. 즉, 1초, 2초, 3초, ...처럼 1초 간격으로만 값이 있거나, 0.1ms 마다 값이 있거나 하는 등, 시간을 기준으로 해서 드문드문 값이 있는 신호이다. 여기서 이산(離散)은, 우리말에서는 "이산 가족" 할 때에나 쓰는 말인데, 영어의 discrete..
05-2. 한 신호를 정해서 손으로 푸리에 변환 해보기 간단한 신호(시간에 대한 크기 값으로 주어지는)에 대해서 푸리에 변환을 해보자. 직접 손으로 한 번 풀어봐야, 푸리에 변환식의 의미를 체감하게 될 것이다. 푸리에 변환식에는 적분이 들어가 있어서, 신호가 조금만 복잡해도 손으로 풀기 어렵다. 해서, 가장 단순한 신호를 가지고 계산해보자. 가장 단순한 신호. 계속해서 1의 값을 가지는 신호를 대상으로 하자. 시간에 대한 그래프로 그려보면 아래와 같이 될 것이다. 이러한 신호에 대한 주파수 영역에서의 그래프는 어떻게 될까? 시간이 변함에 따라 신호 값의 변화가 없이 계속 1이다. 즉, 시간에 대한 변화값이 없다는 것은 주기가 무한대라는 얘기이고, 주파수는 0이라는 것. 따라서, 주파수가 0인 부분에서만 값이 존재하게 될 것이다. 이제 (그림 1)과 같은 신호..
[찾아보기]matplotlib로 만든 애니메이션 모음 이 페이지는 matplotlib 애니메이션으로 만든 예제들을 보여주고, 해당 애니메이션 소스코드 및 설명이 있는 페이지 링크를 제공하는 페이지입니다. 01. matplotlib를 이용해서 애니메이션 그래프(Animation Graph) 만들기 matplotlib 애니메이션 제작을 위해 필요한 프로그램 깔기 등에 대해 가이드 해줌 02. [예제]사인 곡선(사인 그래프, sine graph) 그리기 03. [예제]흐르는 물결같은 사인파(사인 그래프, sine graph) 그리기 04. n이 커질수로 점점 펄스파가되는 애니메이션(변하는 텍스트 n값도 애니메이션) -끝-
04. n이 커질수로 점점 펄스파가되는 애니메이션(변하는 텍스트 n값도 애니메이션) 시간이 흐름에 따라 점점 펄스파(구형파)처럼 변하는 애니메이션을 만들어보겠다. 이러한 파형을 그리는 수식은 아래와 같다. $$ \sum _{n=1} ^{\infty} {\frac {4}{n\pi} \sin {nx}}$$ 이 수식은, 아래 그림과 같은 완벽한 펄스파를 푸리에 급수로 변환하면 나온다. 유도식이 궁금하면 여기 참조: 04-6. 푸리에 급수 예제를 손으로 풀어보기 이 애니메이션을 만들기 위한 핵심 코드는 아래와 같다. title = ax.text(1,1.7,"",bbox={'facecolor':'w', 'alpha':0.5,'pad':5},ha="center") def update(i): global yy y = (4/(i*np.pi))*np.sin(i*x) yy += y line.set_dat..
03. [예제]흐르는 물결같은 사인파(사인 그래프, sine graph) 그리기 아래 영상처럼, 물결이 흐르는 듯한 그래프를 만들어 볼 것이다. 원리는 간단하다. 사인 함수에서 $\sin {(x-a)}$는 $\sin x$의 그래프를 $a$만큼 오른쪽으로 이동한 것과 같다는 원리를 이용. 핵심 코드는 update 함수 안에 있다. def update(i): y = np.sin(x-i) # i만클 shift하는 것임 line.set_data(x, y) return ln, 동영상의 각 프레임마다 이 update함수가 호출될 것이고, 호출될 때마다 $i$값이 1,2,3...으로 증가되어 보내질 것이다. 그렇다면 그 때의 y값은 아래 그림과 같은 모양을 띨 것이고, 이 그림들을 연속으로 보여주면, 마치 파형이 이동하는 것처럼 보일 것이다. 전체 소스는 아래와 같다. import numpy a..
02. [예제]사인 곡선(사인 그래프, sine graph) 그리기 첫 번째 예제이기에, 상세히 코드를 설명할 것이고, 작성된 코드를 이용해서 mp4 및 gif로 만드는 방법도 소개할 것이다. 이다음 예제부터는 애니메이션 핵심 코드를 중심으로만 설명할 예정. 사인 곡선을 그리는 애니메이션을 만들어볼 것이다. 그런데, 애니메이션 코드로 바로 들어가기 전에, 일반적인 정지되어 있는 사인 곡선을 먼저 그려보겠다. 그것이 애니메이션 코드를 바로 소개하는 것보다, 이해가 더 잘될 거 같다. 사인 곡선을 그리는 코드의 핵심은, 1)$x$에 해당하는 값들을 생성하고, 2) 그 $x$ 값들의 sine값을 구해서 $y$에 저장하고, 3) plot 하는 것. 1) x = np.linspace(0, 2*np.pi, 100) 2) y = np.sin(x) 3) plt.plot(x,y) 주피터..