배열과 그래프
학습 목표
배열 축이나 시간 간격을 잘못 해석하면 계산이 실행돼도 물리적 의미가 틀릴 수 있습니다.
배열의 축과 두 종류 곱
시작 조건
, 입니다.
진행 방법
- A의 축별 합·평균과 A*A, A@B의 shape를 실행 전에 적으세요.
- NumPy로 계산하고 A@B의 (0,1) 원소를 손으로 대조하세요.
- 축과 연산별로 결과 배열과 shape를 표에 적으세요.
남길 결과
- 축 집계·두 곱을 포함한 6행 이상 표.
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:
값·의미:
확인할 점
- 행렬곱의 내부 차원이 맞는가?
- A@B[0,1]의 의미가 아니라 (A@B)[0,1]을 확인했는가?
시계열의 축·단위
시작 조건
s, V를 사용합니다.
진행 방법
- 전압과 시간의 원소 수를 확인하고 선 그래프를 그리세요.
np.diff(V)/np.diff(t)로 구간별 기울기를 구해 구간 중점에 표시하세요.- 첫 구간 기울기를 직접 계산하고 코드와 대조하세요.
남길 결과
- 전압·기울기 그림과 4행 표.
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, s를 101점으로 만들고 에 표준편차 .2의 노이즈를 더합니다.
진행 방법
- 같은 노이즈 신호에 길이 3과 9의 균일 Kernel을 사용해
np.convolve(...,mode="same")를 적용하세요. - 원신호·노이즈 신호·두 Filter 출력을 같은 시간축에 표시하세요. 두 RMSE는 양 끝 네 표본을 제외한 공통 구간
[4:-4]에서 원신호와 Filter 출력의 차이로 계산하세요. - Kernel 길이·비교 표본 수·RMSE를 두 행으로 기록하세요. 매끄럽게 보이는 정도와 원신호에 가까운 정도를 그림·RMSE로 구분해 설명하세요.
남길 결과
- 원신호·노이즈 신호·두 Filter 출력의 그림과 RMSE 2조건 표.
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:
관찰한 변화:
확인할 점
- 경계 처리와 비교 구간을 동일하게 두었는가?
- 노이즈를 조건마다 새로 생성하지 않았는가?