달력

5

« 2024/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2015. 9. 8. 23:29

1. Set 전자공학이론/이산수학2015. 9. 8. 23:29

    는 Definition


set

an unordered collection of object.

A = {1, 3, 5, 7}

B = { n | n is a prime number} which we read as 'the set of all n such that n is a prime number'.

Two sets X and Y equal if ((x∈X -> x∈Y) ^ (x∈Y -> x∈X)).

cadinality, denoted by |X|, is the number of elements in a set X.(size)


subset

We write X⊆Y to mean that any member of X is also in Y, and say that X is a subset.

X is proper subset if X ⊆ Y and X≠Y. 


Power set

The set of all subsets of X is called its power set P(X). Thus

P(X) =  { Y | Y⊆X}


partition

A partition S on a set X is a familly {A1, A2, ... , An} of subsets of X, such that

S = {A| (A⊆X) ^ (Aj∩Ak = ø. for every j, k) ^ ( A1∪A2∪ ... ∪ An = X)


operation

①union

X∪Y = { x| x∈X or x∈Y}

② intersection

X∩Y = { x| x∈X and x∈Y}

Two sets X and Y are disjoint if X∩Y = ø.

A collection of sets S is said to be pairwise disjoint if whenever X and Y are distinct sets in S, X and Y are disjoint. 

③ difference

X - Y = { x| x∈X and x∉Y}

④ complement

X^ ̄ = U - X

⑤ Other Notation

Let S = {A1, A2, A3, ... , An}

∪S = { x|x∈X for some X∈S} = A1∪A2∪ ... ∪An

∩S = { x|x∈X for all X∈S} = A1∩A2∩ ... ∩An 

pairwise disjoint의 예) S = { { 1, 4, 5}, {2, 6}, {3}, {7, 8} }


Properties of set operations



문제

'전자공학이론 > 이산수학' 카테고리의 다른 글

6. Proofs  (0) 2015.10.17
5. Proposition  (0) 2015.10.17
4. function  (0) 2015.10.17
3. Relation  (0) 2015.10.17
2. Sequence  (0) 2015.10.16
:
Posted by youjin.A
2015. 9. 7. 23:12

라플라스 변환 전자공학이론/수학2015. 9. 7. 23:12






다음 파일은 RLC회로의 미분방정식을 라플라스 변환과 역변환을 이용하여 푸는 문제들이다.

라플라스변환 회로 문제.hwp


'전자공학이론 > 수학' 카테고리의 다른 글

복소수와 페이저  (0) 2016.02.06
미분법  (0) 2016.02.06
벡터 해석(벡터 대수의 기본 법칙)  (0) 2016.02.06
연립 방정식 푸는 법  (0) 2016.02.06
상수 계수를 가진 1차, 2차 선형 미분방정식  (0) 2015.10.19
:
Posted by youjin.A

구조체 포인터라고 해서 다를 것 없다.

int형 포인터 변수를 선언하듯이 선언하면 되고, int형 포인터를 통해서 접근하듯이 접근하면 된다.


-구조체 포인터

함수의 인자로 기본자료형 변수와 마찬가지로 구조체 변수도 포인터로 전달 할 수 있다.

이렇게 함수 내부에서 외부에 있는 구조체 변수에 직접 접근하기 위해 구조체 포인터를 쓴다.

구조체 변수의 포인터 선언 방식과 매개변수로 구조체 포인터를 선언하는 방식은 일반적은 변수의 포인터 선언규칙을 그대로 적용하면 된다.

또한 구조체 변수의 주소 값을 얻을 때고 & 연산자를 사용한다.


-포인터를 이용한 구조체 멤버의 접근

(*구조체_포인터).멤버 

여기에서 (*구조체_포인터)는 구조체 변수를 의미하게 된다.

멤버에 접근하는 데 ( )가 필요한 이유는 .연산자보다 *연산자의 우선순위가 낮기 때문이다.

그런데 포인터를 이용한 구조체 멤버의 접근을 간단히 처리하는 -> 연산자가 있는 데 다음과 같은 방식으로 접근이 가능하다.

구조체_포인터->멤버

즉, "(*구조체_포인터).멤버"는 "구조체_포인터->멤버"와 완전히 동일한 연산문이다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>
#include <string.h>
 
#define NAME_LEN    30
#define    PID_LEN        15
 
typedef struct _person
{
    char name[NAME_LEN]; //이름
    char ID[PID_LEN]; //주민등록 번호
    unsigned int age; //나이
}person;
 
void ShowPersonData(person * ptr)
{
    printf("이름: %s \n", (*ptr).name);
    printf("주민등록번호: %s \n", (*ptr).ID);
    printf("나이: %u \n", ptr->age);
}
 
int main(void)
{
    person A_youjin = { "안유진""920720-2587412"24 };
    person * personPtr = &A_youjin;
 
    
    ShowPersonData(personPtr);
 
    while (1);
}
cs



:
Posted by youjin.A

1.구조체를 선언할 때 typedef 사용

구조체 변수를 선언 할 때에는 다음과 같이 한다.

struct      자료형_이름      변수_이름;

일반적인 자료형인 int나 double과 마찬가지로 [자료형_이름     변수_이름;] 이렇게 선언하고 싶을 것이다.

앞에있는 struct를 떼버리고...

그런데 typedef 선언을 이용하면 이것이 실제로 가능하다.

typedef    struct    자료형_이름    새롭게_축약된_자료형_이름;        

이 선언에 의해서 새롭게_축약된_자료형_이름 이 struct    자료형_이름 을 대신 할 수 있는 것이다.

이 후 변수를 선언할 때, 컴파일러에 의하여 struct    자료형_이름 새롭게_축약된_자료형_이름이 둘 다 사용될 수 있다. 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
 
struct point
{
    double    xpos;
    double    ypos;
};
 
typedef    struct point point;
 
int main(void)
{
    point p1;
    struct point p2;
 
    p1.xpos = 0.1, p1.ypos = 0.2;
    p2.xpos = 2.4, p2.ypos = 2.5;
 
    printf("X축 거리: %g \n", p2.xpos - p1.xpos);
    printf("Y축 거리: %g \n", p2.ypos - p1.ypos);
 
    while (1);
}
cs



2.구조체의 정의에 포험되는 typedef

위의 코드에서는 구조체의 정의와 typedef선언을 별도로 하고 있다.

하지만 이 둘을 다음과 같이 묶어서 선언할 수 있다.

 struct   point

{

   double xpos;

   double ypos;

};

typedef   struct point point;

 typedef  struct  point

{

    double  xpos;

    double  ypos;

}  point;


아래의 코드는 위의 코드를 오른편에 선언방식으로 대체한 것이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
 
typedef struct point
{
    double    xpos;
    double    ypos;
}point;
 
int main(void)
{
    point p1;
    struct point p2;
 
    p1.xpos = 0.1, p1.ypos = 0.2;
    p2.xpos = 2.4, p2.ypos = 2.5;
 
    printf("X축 거리: %g \n", p2.xpos - p1.xpos);
    printf("Y축 거리: %g \n", p2.ypos - p1.ypos);
 
    while (1);
}
cs


:
Posted by youjin.A
2015. 9. 7. 00:14

트랜지스터의 특성 전자공학이론/전자회로2015. 9. 7. 00:14

컬렉터 특성 곡선


위의 회로에서 V(BB)를 고정시킨다.

그리고 V(CC)를 증가시키면서 V(CE)의 변화에따른 I(C)의 변화를 살펴보면 다음과 같다.


그리고 위의 실험을 V(BB)를 증가시키면서 반복하면 다음과 같은 그래프가 나온다.

위 그래프는 세 영역으로 나눌 수 있는 데 왼쪽부터 Saturation영역, 중간은 Active영역, 오른쪽은 Breakdown영역이다.

여기서 우리는 Active영역을 다루는 데, 이영역은 거의 일정한 직선으로 본다.

그러면 I(C) = B(베타)I(B)

실제로는 Active영역에서 I(C)는 증가하지만 증가하지 않고 일정하다고 가정하면 문제를 풀 수 있기때문이다.



직류 등가 회로


베이스-이미터 접합의 전기적 특성은 다이오드 특성 곡선과 같다.

V(CE)가 활성영역일때 I(C)는 I(B)에 종속적이다.

컬렉터 전류와 베이스 전류의 비는 전류 이득이고 이를 베타로 표시한다.값은 20~200정도 이다.

   

컬렉터 전류와 이미터 전류의 비는 알파로 표시한다. 값은 0.95~0.99 사이이다. 그 이유는 I(C)가 I(E)보다 약간 작기 때문이다.



직류 부하선

맨 위의 회로에서 이번에는 V(CC)가 고정되어 있는 경우를 고려해본다.

핑크색깔 직선은 V(CC)가 고정 되어 있을 때, V(BB)를 변화 시켰을 때의 V(CE)와 I(C)이다.

V(BB)를 증가 시킴에 따라 I(B)가 증가하면 핑크색 그래프위의 점은 차단점->Q1->Q2->Q3->포화점으로 이동한다.

차단점은 I(B)가 0일 때, I(C) = 0이고 V(CE) = V(CC)인 점이고

포화점은 V(CE)가 0인 이상적인 상황에서 흐를 수 있는 최대 전류 IC(sat) 이다.



동작점


베이스에 교류신호를 입력했을 때 신호가 차단점 이하이거나 포화점 이상이면 출력파형이 짤리게 된다.


출력 파형이 짤리지 않게 하기위해서 교류신호 말고 DC로 바이어스를 시켜준다.


회로에 교류 입력 전압을 인가하지 않았을 때 I(C)와 V(CE)를 동작점이라고 하는데 이 동작점을 부하선의 가운데로 맞춰준다.



:
Posted by youjin.A








:
Posted by youjin.A
2015. 9. 4. 17:43

구조체의 정의 프로그래밍/C언어2015. 9. 4. 17:43

구조체를 사용함으로써 여러 변수를 하나로 묶어 새로운 자료형을 정의 할 수 있다.

 


-구조체 정의

struct     자료형_이름

{

   변수 선언1;

   변수 선언2;

   변수 선언3;

};


배열도 변수이기 때문에 구조체의 멤버가 될 수 있다.

 



-구조체 변수 선언

struct      자료형_이름    변수_이름;


또는 다음과 같이 구조체를 정의함과 동시에 구조체 변수를 선언 할 수 있다.


struct     자료형_이름

{

   변수 선언1;

   변수 선언2;

   변수 선언3;

}변수_이름1, 변수_이름2, 변수_이름3;




-구조체 변수의 초기화

구조체 변수의 초기화 방법은 배열의 초기화와 유사하다.

단순히 멤버의 순서대로 초기화할 대상을 나열하면 된다.

그래서 초기화 과정에서는 문자열 저장을 위해서 strcpy()함수를 호출 하지 않아도 된다.

 



-구조체 변수의 멤버에 접근

​구조체_변수_이름.멤버_이름




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <stdio.h>
#include <string.h>
 
struct person //구조체 정의
{
    char name[20];
    char phoneNumber[20];
    int age;
}man1, man2; //구조체 변수 선언
 
int main(void)
{
    //struct person man1, man2; //구조체 변수 선언
        
    /*구조체 변수의 초기화*/
    struct person man3 = {"홍길동""010-1234-8697", 84};     
    
    /*구조체 멤버에 접근*/
    strcpy(man1.name,"안유진");
    strcpy(man1.phoneNumber,"010-4085-8697");
    man1.age = 23;
        
    /*구조체의 scanf 사용*/
    printf("이름을 입력하세요: "); scanf("%s", man2.name);
    printf("전화 번호를 입력하세요: "); scanf("%s", man2.phoneNumber);
    printf("나이를 입력하세요: "); scanf("%d", &man2.age);
 
    /*구조체의 printf 사용*/
    printf("이름: %s \n", man1.name);
    printf("전화번호: %s \n", man1.phoneNumber);
    printf("나이: %d\n\n", man1.age);
 
    printf("이름: %s \n", man2.name);
    printf("전화번호: %s \n", man2.phoneNumber);
    printf("나이: %d\n\n", man2.age);
 
    printf("이름: %s \n", man3.name);
    printf("전화번호: %s \n", man3.phoneNumber);
    printf("나이: %d\n", man3.age);
    
    return 0;
}


:
Posted by youjin.A

컴파일 할 때, 특정 조건에 따라 소스코드의 일부를 삽입할 수 있는 지시자들이 있다.

이 지시자에서 조건을 만족하지 않아서 삽입되지 않은 코드는 오류가 있더라도 전체 프로그램은 컴파일 오류가 생기지 않는다.


1. #if... #endif : 매크로가 참이면

#if (매크로)

코드

#endif

매크로가 참이라면 코드가 소스에 삽입되고, 거짓이면 코드는 삭제된다.

매크로 부분에 연산자는 사용가능하나 변수는 사용할 수 없다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>
#define ADD    
#define MIN    
 
int main(void)
{
    int num1, num2;
    //int add = 0, min = 1;
 
    printf("두 개의 정수 입력: ");
    scanf_s("%d %d"&num1, &num2);
 
 
 
#if ADD
    printf("%d + %d = %d\n", num1, num2, num1 + num2);
#endif // ADD
 
#if MIN
    printf("%d - %d = %d\n", num1, num2, num1 - num2);
#endif // MIN
 
    return 0;
}
 








2. #ifdef... #endif : 매크로가 정의되어 있다면

#ifdef (매크로)

코드

#endif

매크로가 #define으로 정의가 되어 있다면 코드가 삽입된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>
#define ADD    0
#define MIN    1
 
int main(void)
{
    int num1, num2;
    //int add = 0, min = 1;
 
    printf("두 개의 정수 입력: ");
    scanf_s("%d %d"&num1, &num2);
 
 
 
#ifdef ADD
    printf("%d + %d = %d\n", num1, num2, num1 + num2);
#endif // ADD
 
#ifdef MIN
    printf("%d - %d = %d\n", num1, num2, num1 - num2);
#endif // MIN
 
    while (1);
}
 
cs

3. #ifndef... #endif : 매크로가 정의되지 않았다면
#ifndef (매크로)
코드
#endif
위의 #ifdef... #endif와 비슷하지만 이 지시자는 매크로가 정의되지 않았다면 코드를 삽입한다.

4. #else의 삽입 : #if, #ifdef, #ifndef에 해당
#if (매크로)
코드1
#else
코드2
#endif
#if의 경우 매크로가 참이거나, #ifdef의 경우 매크로가 정의되어 있거나, #ifndef의 경우 매크로가 정의되어 있지 않으면 코드1을 삽입하고 아니면 코드2를 삽입한다.  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#define HIT_NUM 6
 
int main(void)
{
#if HIT_NUM == 5
    puts("1");
#else
    puts("2");
#endif
 
    while (1);
}
 
cs
위 코드를 실행하면 2가 출력된다.

5. #elif의 삽입 : #if에만 해당
#if (매크로1)
코드1
#elif (매크로2)
코드2
#endif

#else + if인 것으로 조건을 추가할 수 있다.

#if의 경우에만 사용할 수 있다.

매크로1이 참이면 코드1을 수행, 매크로1이 거짓이고 매크로2가 참이면 코드2를 수행한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#define HIT_NUM 6
 
int main(void)
{
#if HIT_NUM == 5
    puts("5");
#elif    HIT_NUM == 6
    puts("6");
#else
    puts("nope");
#endif
 
    while (1);
}
 
cs


:
Posted by youjin.A