촬리의늘솔길

MATLAB 실습 필기(신호 및 시스템) 본문

✍~2022/MATLAB

MATLAB 실습 필기(신호 및 시스템)

리촬리 2021. 9. 9. 15:27

1.1 Main Window

matlab은 행렬로 이루어져 있어서 한개의 값을 저장하면 1x1 double형으로 저장된다. 

그냥 저장할경우 모든 변수들이 자동으로 double 으로 저장됨

메모리의 효율적 사용은 불가하지만 , 편리하게 사용할 수 있다.

 

1.2 help window

도움말 창, 도움말 버튼, f1으로 원하는걸 알아볼 수있다. (함수나 문서)

명령 창에 [help index]를 입력하면 index의 정보 출력

ex : 

>> help log
 log - 자연 로그(Natural Logarithm)
    배열 X의 각 요소에 대한 자연 로그 ln(x)를 반환합니다.

    Y = log(X)

    참고 항목 log1p, log2, log10, exp, logm, reallog, loglog, semilogx,
        semilogy

    log에 대한 문서

 

 

1.3 m-file의 작성 및 실행

① [새로 만들기] → [스크립트] 선택 또는 ctrl+N

② 편집기 창이 뜨면 m-file을 작성한다. [보기] a=10; b=log(a)

③ 알맞은 이름으로 저장한다. 숫자로 시작하거나 숫자만으로 된 이름은 불가! [보기] ex1.m

④ f5 또는 상단 메뉴의 ▶아이콘으로 실행한다. 명령 창에서 파일 이름을 입력하여 실행할 수도 있다. ⑤ 수행한 결과가 명령 창에 나타난다. 마지막에 ‘ ; ’을 붙이지 않은 명령 의 결과를 보여줌.

 

 

더 많은 소숫점 뒤 자리수를 알고싶을때는 작업공간에서 더블클릭!

 


2.1 Variables 변수

■ 변수 이름은 알파벳으로 시작하고, 알파벳과 ‘ _ ’ 또는 숫자로 구성 (숫자로 시작하면 안됨)

■ array index는 1부터 시작한다. (0부터 시작하는 C 언어와는 다름)

■ array 변수

a(1)=1; a(2)=2; a(3)=3; a(4)=4; a(5)=5;

a=[1 2 3 4 5];

a=1:5; % m:n은 m부터 n까지 1의 간격으로 배정 (주석은 %)

cf.) a=[1 1.5 2 2.5 3 3.5 4 4.5 5];

      ⇒ a=1:0.5:5; % m:k:n은 m부터 n까지 k의 간격으로 배정

     

■ 행렬 변수

a=[1 2 3 ; 4 5 6 ; 7 8 9];

세미콜론은 행과 행을 구분하는 역할

a =

     1     2     3
     4     5     6
     7     8     9

 

원하는 원소의 값 출력

a(2,3)

ans =

     6

 

 

2.2. Calculations: Operators and Functions

행렬 곱셈의 원칙

앞에 곱하는 행렬의 열 == 뒤에곱하는 행렬의 행이 같아야만 곱셈 가능

+ - * (행렬곱셈) / ^ (지수) ' (전치 또는 켤레 전치)

.* (array 곱셈) ./ (array 나눗셈) .^ (array 지수) 

서로다른 행렬의 같은 위치에 있는 원소들끼리 곱하고(나누고) 싶을때 점을 찍고 곱하기(나누기)를 해야함 .*

➥ 반드시 두 array의 크기가 같아야 한다

 

[보기] a=1:5; b=2:6; c=a.*b; ⇒ c=[2 6 12 20 30] c=a*b

          % error 발생

 

■ Elementary math functions (>> help elfun )

abs 절댓값

sqrt 루트

exp e의 지수

sin ,cos, log, log10

 

영어로 가득해.. ㅜ

 

■ Elementary matrix

zeros(m,n) m×n all-zero-matrix

ones(m,n) m×n all-one-matrix

eye(m,n) m×n identity matrix

rand(m,n) m×n uniformly distributed random matrix

randn(m,n) m×n normally distributed random matrix

더보기

>> zeros(2,3)

ans =

     0     0     0
     0     0     0

>> ones(2,3)

ans =

     1     1     1
     1     1     1

>> eye(2,3)

ans =

     1     0     0
     0     1     0

>> rand(2,3)

ans =

    0.8147    0.1270    0.6324
    0.9058    0.9134    0.0975

>> randn(2,3)

ans =

   -0.4336    3.5784   -1.3499
    0.3426    2.7694    3.0349

[보기] F=5*ones(3,3);

F =

     5     5     5
     5     5     5
     5     5     5

 


Lesson 3 Plotting: Continuous and Discrete Signals

3.1. Continuous Signal

배운거 한번 그려보기

 

 

t = 0:0.1:30 ; %시간변수 설정 continuous처럼 보이게 , 간격이 작으면 작을수록 t가 늘어나서 너무크면 속도 느려질수도..?
x = exp(-.1*t).*sin(2/3*t) ; %array와 array값을 곱할때 .* 를 사용함


plot(t,x) % 가로,세로축 변수의 값으로 그림을 그려라 라는뜻

 

한번에 주석처리 ctrl + r

해제 ctrl+t
axis([0 30 -1 1]) % 축을 [] 대괄호 영역내에서 그릴 수 있도록 수를 지정
grid on % 안내선
xlabel('Time (sec)') % 가로축에 글씨를 적어준다
ylabel('x(t)') %세로축에 글씨를 적어준다
title('Continuous Signal') %제목을 적어준다

 

<그래프>

 

■ plot 함수 (>> help plot )

∙ 사용법: plot(x_변수, y_변수, 'linespec');

∙ linespec: line specificatio

선을 어떠한 방법으로 그릴지 자세하게 설정가능

ex: 빨갛고 동그란 모냥을 추가

■ 그림 창의 메뉴에서 화살표 아이콘을 클릭한 뒤, 그래프 선이나 축을 클릭한다.

마우스 오른쪽 버튼을 누르고 다양한 메뉴를 선택하여 그래프 와 축을 변화시킬 수 있다.

속성 인스펙터를 열어서 원하는대로 조절할 수있는 다양한 메뉴들이 있음.

 

3.2. Discrete Signal

discrete.m

특정시점에서만 값이 존재해서, 점을 찍고 

잘 보이게 선을 내려 그음.

■ stem 함수 (>> help stem ) <아래로 선그려주는

∙ 사용법: stem(x_변수, y_변수, 'linespec', 'filled');

∙ filled: with filled markers (이 항목이 없으면 빈 동그라미로 나타남)

 

n = -2:6 ;
x = [0 0 1 2 1 0 -1 0 0] ;

stem(n,x,'ro','filled') ; %동그라미를 채워줌
xlabel('n') ;
ylabel('x[n]') ;

3.3. Sampled Signal

% sampled.m

샘플링된 시그널

 

728x90

'✍~2022 > MATLAB' 카테고리의 다른 글

드디어~ Convolution  (0) 2021.10.03
2. 실습  (0) 2021.09.23