배열과 그래프

학습 목표

배열 축이나 시간 간격을 잘못 해석하면 계산이 실행돼도 물리적 의미가 틀릴 수 있습니다.

배열의 축과 두 종류 곱

시작 조건

A=[123456]A=\begin{bmatrix}1&2&3\\4&5&6\end{bmatrix}, B=[201301]B=\begin{bmatrix}2&0\\1&3\\0&1\end{bmatrix}입니다.

진행 방법

  1. A의 축별 합·평균과 A*A, A@B의 shape를 실행 전에 적으세요.
  2. NumPy로 계산하고 A@B의 (0,1) 원소를 손으로 대조하세요.
  3. 축과 연산별로 결과 배열과 shape를 표에 적으세요.

남길 결과

import numpy as np
A=np.array([[1,2,3],[4,5,6]])
B=np.array([[2,0],[1,3],[0,1]])
print(A@B)
# TODO: 축 집계와 예상 shape 표를 완성하세요.

결과 기록·자가 점검

연산:

예상 shape:

실제 shape:

값·의미:

확인할 점

시계열의 축·단위

시작 조건

t=[00.10.20.30.4]t=\begin{bmatrix}0&0.1&0.2&0.3&0.4\end{bmatrix} s, V=[00.81.31.61.8]V=\begin{bmatrix}0&0.8&1.3&1.6&1.8\end{bmatrix} V를 사용합니다.

진행 방법

  1. 전압과 시간의 원소 수를 확인하고 선 그래프를 그리세요.
  2. np.diff(V)/np.diff(t)로 구간별 기울기를 구해 구간 중점에 표시하세요.
  3. 첫 구간 기울기를 직접 계산하고 코드와 대조하세요.

남길 결과

import numpy as np
import matplotlib.pyplot as plt
t=np.array([0,.1,.2,.3,.4]);v=np.array([0,.8,1.3,1.6,1.8])
plt.plot(t,v,'o-');plt.xlabel('Time [s]');plt.ylabel('Voltage [V]');plt.grid()
# TODO: 구간별 기울기와 구간 중점을 구하세요.

결과 기록·자가 점검

구간 [s]:

ΔV [V]:

Δt [s]:

기울기 [V/s]:

확인할 점

노이즈와 평활화

시작 조건

seed=7, 0≤t≤20\le t\le 2 s를 101점으로 만들고 sin⁡(2πt)\sin(2\pi t)에 표준편차 .2의 노이즈를 더합니다.

진행 방법

  1. 같은 노이즈 신호에 길이 3과 9의 균일 Kernel을 사용해 np.convolve(...,mode="same")를 적용하세요.
  2. 원신호·노이즈 신호·두 Filter 출력을 같은 시간축에 표시하세요. 두 RMSE는 양 끝 네 표본을 제외한 공통 구간 [4:-4]에서 원신호와 Filter 출력의 차이로 계산하세요.
  3. Kernel 길이·비교 표본 수·RMSE를 두 행으로 기록하세요. 매끄럽게 보이는 정도와 원신호에 가까운 정도를 그림·RMSE로 구분해 설명하세요.

남길 결과

rng=np.random.default_rng(7);t=np.linspace(0,2,101)
truth=np.sin(2*np.pi*t);observed=truth+rng.normal(0,.2,len(t))
# TODO: np.convolve와 공통 내부 구간으로 이동평균을 비교하세요.

결과 기록·자가 점검

Window:

비교 구간:

RMSE:

관찰한 변화:

확인할 점