본문 바로가기

etc/MATLAB

[MATLAB] 1-2 신호의 에너지와 전력 계산하기

수치 적분 함수

1. integral

예제

f = @(x) x.^2; % 적분할 함수
Q = integral(f, 0, 1); % 구간 [0, 1]에서 적분
disp(Q); % 결과 출력, 1/3 ≈ 0.3333

 

혹은 피적분 함수가 같은 경로내 다른 m파일에 정의된 경우에는 다음과 같이 사용한다.

Q = integral(@new_f, 0, 1); % 구간 [0, 1]에서 적분
disp(Q); % 결과 출력, 1/3 ≈ 0.3333

 

  • 함수 핸들을 입력으로 받아 적응형 방법으로 수치적분을 수행
  • 복잡한 함수, 무한 구간, 특이점이 있는 함수에도 적합
  • 다양한 옵션 제공
  • 정밀한 계산을 위해 사용

 

2. trapz

예제

t = 0:0.01:1; % 시간 벡터
y = t.^2; % y 값 벡터
Q = trapz(t, y); % 사다리꼴 법을 사용한 수치 적분
disp(Q); % 결과 출력, 1/3 ≈ 0.3333

 

  • 데이터 포인트가 주어진 경우 간단하게 사용할 수 있다.
  • 함수 형태를 정의하지 않고도 사용할 수 있다.
  • 복잡한 수학적 함수보다는 데이터 점들 사이의 면적을 구하는 데 적합하다.

 

문제

다음과 같은 신호에 대하여 신호의 파형을 그리고 에너지와 전력을 구하라.

 

$x(t) = 2te^{-t}u(t)$

$y(t) = \sqrt{2} \sin(\pi t)$

 

$u(t)$는 unit step function을 의미한다.

 

x(t)는 intergral을 사용하고 y(t)는 trapz를 사용해서 계산해보자.

 

우선 integral에 사용될 피적분함수(x(t)의 제곱)를 다른 m파일에 정의한다.

% int_fctn_1.m

function xs = int_fctn_1(t)
x = 2 * t .* exp(-t);
xs = x .^ 2;
end

 

1. 신호 생성 및 에너지, 전력 계산

dt = 0.01;
t = 0:dt:10;
x = 2 * t .* exp(-t);
y = sqrt(2) * sin(pi * t);
y_squared = y .^ 2;

T = 2; N = T / dt;
Ex = integral(@int_fctn_1, 0, 10);
fprintf('신호 x(t)의 에너지 = %6.4f\n', Ex)
Py = trapz(t(1 : N), y_squared(1 : N)) / T;
fprintf('신호 y(t)의 전력 = %6.4f\n', Py)

 

명령창 결과

신호 x(t)의 에너지 = 1.0000
신호 y(t)의 전력 = 1.0000

 

  • %6.4f\n : fprintf 함수에서 사용되는 형식 지정자로 출력되는 숫자의 형식을 지정한다.
  • % : 형식 지정자가 시작됨을 나타낸다.
  • 6.4 : 소수점과 그 앞뒤 숫자를 포함한 최소 너비 6, 소수점 이하 4자리 까지
  • f : 부동 소수점 숫자를 의미
  • \n : 줄 바꿈

 

2. 그래프 그리기

figure; % 그림창 열기
subplot(1, 2, 1); plot(t, x);
axis([0 10 0 1]); grid on;
title('x(t) = 2 * t * exp(-t)');
xlabel('Time (s)');
ylabel('Amplitude');

subplot(1, 2, 2); plot(t, y);
axis([0 6 -2 2]); grid on;
title('y(t) = sqrt(2) * sin(pi * t)');
xlabel('Time (s)');
ylabel('Amplitude');

 

플로팅 결과

 

 

'etc > MATLAB' 카테고리의 다른 글

[MATLAB] 1-1 정현파 그리기  (0) 2024.05.19