728x90

 0. [matlab] - Plotting and Even and Odd Signals




 1. 풀이


함수의 even과 odd를 판별하는 문제였다.

이 판별은 매우 간단한데, 주기를 판별하기 위해 [f(x) + f(-x)]/2가 0인지, f(x)인지 확인하는 것을 통해 0인 경우 odd, f(x)인 경우 even이다.



 2. 소스코드


1.

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
1. Use "plot" in MATLAB to plot the following continuous-time signals (You have to plot the signals in one figure)
 
% (1)
% t = linspace(0,301000);         % [0,30]의 구간을 1000개 선형 간격 값으로 정의하는 함수
= 0:0.001:30;
= make_x(t, 1010);          % 시간: t, time_scale : 1, time_shift : 0, Amplitude_scale : 1, Amplitude_shift : 0
 
figure(1)                           % 창을 만들어준다.
plot(t,x)                           % 현재 만들어진 창에 x(t) 그래프를 출력
 
% (2)
= make_x(t, 0.1020);        % 시간: t, time_scale : 0.1, time_shift : 0, Amplitude_scale : 2, Amplitude_shift : 0
 
figure(2)
plot(t,x)
 
3
= make_x(t, 0.12-0.10);     % 시간: t, time_scale : 0.1, time_shift : 2, Amplitude_scale : -0.1, Amplitude_shift : 0
 
figure(3)
plot(t,x)
 
% 이번에 활용되는 함수를 미리 정의한다.
function a = make_x(t, t_scale, t_shift, a_scale, a_shift)
    a = a_scale*sin(3*pi*t_scale*(t - t_shift)/4).*exp(-t_scale*(t - t_shift)/2+ a_shift;
end

cs


2.

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
2. Use "stem" in MATLAB to plot the following discrete-time signals (You have to plot the signals in one figure)
 
% (1)
= 0:1:30;                     % 구간 간격 크기가 1인 discrete한 시간 입력
= make_x(n, 1010);      % 변수 : n, time_scale : 1, time_shift : 0, Amplitude_scale : 1, Amplitude_shift : 0
 
figure(1)                       % 창을 만들어준다.
stem(n,x)                       % 현재 만들어진 창에 x(t) 그래프를 출력
 
% (2)
= make_x(n, 0.1020);    % 변수 : n, time_scale : 0.1, time_shift : 0, Amplitude_scale : 2, Amplitude_shift : 0
 
figure(2)
stem(n,x)
 
% (3)
= make_x(n, 0.12-0.10); % 변수 : n, time_scale : 0.1, time_shift : 2, Amplitude_scale : -0.1, Amplitude_shift : 0
 
figure(3)
stem(n,x)
 
% 이번에 활용되는 함수를 미리 정의한다.
function a = make_x(t, t_scale, t_shift, a_scale, a_shift)
    a = a_scale*sin(3*pi*t_scale*(t - t_shift)/4).*exp(-t_scale*(t - t_shift)/2+ a_shift;
end
cs




3.

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
3. Given the signal x(t) (and x[n]), design the algorithm that decompose x into even and odd signals.
% Also, use your algorithm to find and plot even and odd signals of the following signals.
% You MUST implement the algorithm of finding even and odd functions.
 
% (1)
% 함수의 변수는 t, time_scale : 1, time_shift : 0, Amplitude_scale : 1, Amplitude_shift : 0
% 이를 활용해서 Even signal을 만들어주었다.
= 0:0.01:30;                                                  % [0,30] 구간 설정
= (make_x(t, 1010+ make_x(-t, 1010))/2;         % even signal 분석
figure(11)                                                      % figure '11'을 만들어준다.
plot(t,x)                                                       % 현재 만들어진 창에 x(t) 그래프를 출력
 
%odd signal
= (make_x(t, 1010- make_x(-t, 1010))/2;         % odd signal 분석
figure(12)                                                      % 창을 만들어준다.
plot(t,x)                                                       % 현재 만들어진 창에 x(t) 그래프를 출력
 
 
% 함수의 변수는 t, time_scale : 0.1, time_shift : 0, Amplitude_scale : 2, Amplitude_shift : 0
% (2)
= (make_x(t, 0.1020+ make_x(-t, 0.1020))/2;     % even signal 분석
figure(21)                                      
plot(t,x)                                         
 
= (make_x(t, 0.1020- make_x(-t, 0.1020))/2;     % odd signal 분석
figure(22)
plot(t,x)
 
% 함수의 변수는 t, time_scale : 0.1, time_shift : 2, Amplitude_scale : -0.1, Amplitude_shift : 0
% (3)
= (make_x(t, 0.12-0.10+ make_x(-t, 0.12-0.10))/2;   % even signal 분석
figure(31)
plot(t,x)
 
= (make_x(t, 0.12-0.10- make_x(-t, 0.12-0.10))/2;   % odd signal 분석
figure(32)
plot(t,x)
 
 
 
 
 
% (4)   이 문제부터는 discrete-time signal을 분석한다. 변수로 n을 활용한다.
% 함수의 변수는 n, time_scale : 1, time_shift : 0, Amplitude_scale : 1, Amplitude_shift : 0
= 0:1:30;    % n은 [030]의 discrete한 값을 가진다.                                             
= (make_x(n, 1010+ make_x(-n, 1010))/2;         % even signal 분석
figure(41)
stem(n,x)
 
= (make_x(n, 1010- make_x(-n, 1010))/2;         % odd signal 분석
figure(42)
stem(n,x)
 
 
 
% (5)
% 함수의 변수는 n, time_scale : 0.1, time_shift : 0, Amplitude_scale : 2, Amplitude_shift : 0
= (make_x(n, 0.1020+ make_x(-n, 0.1020))/2;         % even signal 분석
figure(51)
stem(n,x)
 
= (make_x(n, 0.1020- make_x(-n, 0.1020))/2;         % odd signal 분석
figure(52)
stem(n,x)
 
 
% (6)
% 함수의 변수는 n, time_scale : 0.1, time_shift : 2, Amplitude_scale : -0.1, Amplitude_shift : 0
= (make_x(n, 0.12-0.10+ make_x(-n, 0.12-0.10))/2;       % even signal 분석
figure(61)
stem(n,x)
 
= (make_x(n, 0.12-0.10- make_x(-n, 0.12-0.10))/2;       % odd signal 분석
figure(62)
stem(n,x)
 
 
% 이번에 활용되는 함수를 미리 정의한다.
function a = make_x(t, t_scale, t_shift, a_scale, a_shift)
    a = a_scale*sin(3*pi*t_scale*(t - t_shift)/4).*exp(-t_scale*(t - t_shift)/2+ a_shift;
end
cs





 3. 참고


https://ko.wikipedia.org/wiki/%ED%99%80%ED%95%A8%EC%88%98%EC%99%80_%EC%A7%9D%ED%95%A8%EC%88%98


질문이나 지적 있으시면 댓글로 남겨주세요~

도움 되셨으면 하트 꾹!


+ Recent posts