C++ 반전 연산자~와 논리 연산자 !의 차이

Skills/Programming 2014. 12. 16. 14:51

case CMD_TELEOPERATION:    

{

bETRI_Tele = !bETRI_Tele;

cout<<"bETRI_Tele : "<<bETRI_Tele<<endl;

}

MFC 다이얼로그를 통해 버튼을 누르면 위의 코드에 들어가게 해 두었다.

그런데 이상한 점 발견! 


bETRI_Tele = ~bETRI_Tele; 로 할 때에는 cout이 계속 1의 값을 반환한다는 것이다!

그러나 bETRI_Tele = !bETRI_Tele; 로 할 때에는 버튼을 누를 때마다 0과 1의 값이 반복되면서 제대로 잘 나온다.


일단, 그 원인은 ~가 bit 연산자라는 것에 있을 것으로 판단되고 boolean이 bit로 보았을 때에는 단순한 1과 0 이 아닐 것이라는 추측이 된다.

설정

트랙백

댓글

Sampling의 기본 개념

지난 시간 리뷰.

아래와 같은 정현파 신호가 있을 떄, 

주기적일 필요충분 조건은 f가 유리수이고, f가 k/n으로 표시되고 k와 n이 서로 소 일 때, n이 주기 값을 갖게 된다. 

그렇다면 아래와 같이 두 개의 정현파 신호의 선형 조합으로서 신호가 구성되어 있다면, 

그리고, 처음에 말한 필요충분 조건을 만족한다고 했을 때, f1 과 f2 의 최소 공배수를 주기로 갖는다.



어차피 fk는 f0와 동일한 이산시간 주파수를 갖는다. 이 때, fk는 f0의 alias 성분이라고 한다.

f가 특정한 범위 안에 있지 않은 값들은 특정한 범위 안에 있는 값으로 재해석 될 필요가 있다.

fundamental frequency 벗어나면 더 이상 unique한 표현식을 갖지 못한다.

이 fundamental frequency의 범위는 아래와 같고, 몹시 중요하다.



그런데 이 것을 잘 생각해보면, 

즉, 여기에서 우리는 아래와 같은 중요한 개념을 구할 수 있다.

sampling frequency는 최대 주파수 성분의 2배 이상이어야 한다. 

그래야 적절한 analog 신호와 이산신호 시간 사이의 관계를 구축할 수 있다. 




몇 가지 예제를 통해 점검해 보자.

우선 첫 번쨰 예제.

x1(t)는 10Hz의 주파수, x2(t)는 50Hz의 주파수를 갖는다.

이 때, sampling frequency가 100Hz는 되어야 할 텐데 40Hz밖에 되지 않는다.

즉, 문제가 발생한다는 것인데 어떻게 될 지 살펴보자.

x1(t)의 f1은 1/4, x2(t)의 f2는 5/4가 된다.  (f는 -1/2와 1/2 사이여야 하는데 f2는 이 범위 밖에 있다.)

(*이 떄, Fs/F는 샘플링 된 신호의 주파수.. 이산신호 주파수임(원래는 F라는 주파수를 갖는 아날로그 신호))

이렇게, 어떤 신호가 fundamental frequency의 범위 밖에 있을 때 (sampling frequency * 0.5)

와 같이 fundamental 주파수 내의 값과 정수의 합 표현으로 나타내면 된다.

즉, x2(t)는 5/4의 f2를 갖지만 사실은 1+1/4로 표현되어 1/4이 된다. 

즉, 이것을 물리적인 의미로 설명하자면.. x1과 x2 두 analog 신호를 40Hz로 sampling 했더니 동일한 이산시간 주파수를 갖는다는 것이다. (충분한 sampling frequency를 갖지 못했으므로... 그래서 F2는 F1의 alias 성분이 된 것이다.) 

이 현상을 주파수 도메인에서 다시 해석해보자. 

이 때, folding frequency라는 개념이 등장한다.

그리고 2번째 예제에서 볼 수 있듯, analog signal에서 이산신호로 적절히 sampling하기 위한 최소한의 주파수를 Nyquist frequency라고 한다. 


마지막 예제를 보자.


위 처럼, Fs가 충분하지 않게 sampling이 되면 다시 D/A를 했을 때 복원된 신호가 달라지게 된다. 

중간에는 fundamental frequency의 영역을 벗어난 주파수가 조절되는 과정이 있다.




'Research > Digital Signal Processing' 카테고리의 다른 글

정현파 신호  (0) 2014.12.11
주파수(frequency)란?  (0) 2014.12.11
Sampling Theorem  (0) 2014.12.11
A/D conversion (Analog to Digital) 과정  (0) 2014.12.11
신호(signal)란 무엇인가  (0) 2014.12.10

설정

트랙백

댓글